- 浏览: 173456 次
- 性别:
- 来自: 济南
文章分类
最新评论
A message containing letters from A-Z is being encoded to numbers using the following mapping:
'A' -> 1
'B' -> 2
...
'Z' -> 26
Given an encoded message containing digits, determine the total number of ways to decode it.
For example,
Given encoded message "12", it could be decoded as "AB" (1 2) or "L" (12).
The number of ways decoding "12" is 2.
属于一维动态规划的题目,首先我们构造一个dp数组,题目中要求只有数字1 - 26才是合法数字,当出现‘0’的时候就无法解码。因此我们可以首先判断一下字符串的第一个字符是否为‘0’,如果为‘0’我们可以直接返回0,当然如果字符串本身为空,也是直接返回0。如果不为0,这时我们让dp[0] = 1,对应了第一个字符只有一种解码方式, 对于到第i个字符时,如果它不为‘0’,它可能的情况至少有dp[i - 1]种,然后我们查看第i个字符和第i- 1 个字符构成的数字是否在1-26之间,如果在,那么到第i个字符总共有dp[i - 1] + dp[i - 2]种,这时(i > 1, i == 1 的时候 有dp[i - 1] + 1 种) ,这样递推式就有了,代码如下:
'A' -> 1
'B' -> 2
...
'Z' -> 26
Given an encoded message containing digits, determine the total number of ways to decode it.
For example,
Given encoded message "12", it could be decoded as "AB" (1 2) or "L" (12).
The number of ways decoding "12" is 2.
属于一维动态规划的题目,首先我们构造一个dp数组,题目中要求只有数字1 - 26才是合法数字,当出现‘0’的时候就无法解码。因此我们可以首先判断一下字符串的第一个字符是否为‘0’,如果为‘0’我们可以直接返回0,当然如果字符串本身为空,也是直接返回0。如果不为0,这时我们让dp[0] = 1,对应了第一个字符只有一种解码方式, 对于到第i个字符时,如果它不为‘0’,它可能的情况至少有dp[i - 1]种,然后我们查看第i个字符和第i- 1 个字符构成的数字是否在1-26之间,如果在,那么到第i个字符总共有dp[i - 1] + dp[i - 2]种,这时(i > 1, i == 1 的时候 有dp[i - 1] + 1 种) ,这样递推式就有了,代码如下:
public class Solution { public int numDecodings(String s) { if(s == null || s.length() == 0 || s.charAt(0) == '0') return 0; int[] dp = new int[s.length()]; dp[0] = 1; for(int i = 1; i < s.length(); i++) { if(s.charAt(i) != '0') dp[i] = dp[i - 1]; if(s.charAt(i - 1) != '0') { int code = Integer.parseInt(s.substring(i - 1, i + 1)); if(code >= 1 && code <= 26) { if(i > 1) { dp[i] += dp[i - 2]; } else { dp[i] += 1; } } } } return dp[s.length() - 1]; } }
发表评论
-
498. Diagonal Traverse
2019-11-15 13:52 227Given a matrix of M x N eleme ... -
496 Next Greater Element I
2019-11-14 13:50 226You are given two arrays (witho ... -
Word Break II
2016-03-09 03:15 342Given a string s and a dictiona ... -
Insert Interval
2016-03-08 02:11 333Given a set of non-overlapping ... -
Merge Intervals
2016-03-07 05:25 451Given a collection of intervals ... -
Merge k Sorted Lists
2016-03-07 04:03 512Merge k sorted linked lists and ... -
Multiply Strings
2016-03-06 07:27 430Given two numbers represented a ... -
N-Queens II
2016-03-06 03:06 620Follow up for N-Queens problem. ... -
N-Queens
2016-03-06 02:47 428The n-queens puzzle is the prob ... -
First Missing Positive
2016-03-05 03:09 388Given an unsorted integer array ... -
Spiral Matrix
2016-03-04 03:39 519Given a matrix of m x n element ... -
Trapping Rain Water
2016-03-04 02:54 532Given n non-negative integers r ... -
Repeated DNA Sequences
2016-03-03 03:10 371All DNA is composed of a series ... -
Increasing Triplet Subsequence
2016-03-02 02:48 861Given an unsorted array return ... -
Maximum Product of Word Lengths
2016-03-02 01:56 883Given a string array words, fin ... -
LRU Cache
2016-02-29 10:37 555Design and implement a data str ... -
Super Ugly Number
2016-02-29 07:07 601Write a program to find the nth ... -
Longest Increasing Path in a Matrix
2016-02-29 05:56 764Given an integer matrix, find t ... -
Coin Change
2016-02-29 04:39 735You are given coins of differen ... -
Minimum Height Trees
2016-02-29 04:11 629For a undirected graph with tre ...
相关推荐
js代码-leetcode 91 DEcode Ways
Ways](./leetcode/动态规划-Decode Ways.java) [动态规划-Distinct Subsequences](./leetcode/动态规划-Distinct Subsequences.java) [动态规划-Longest Valid Parentheses](./leetcode/动态规划-Longest Valid ...
Decode Ways Distinct Subsequences Word Break Word Break II Dungeon Game House Robber House Robber II House Robber III Range Sum Query - Immutable Range Sum Query 2D - Immutable 图 Clone Graph 位操作 ...
leetcode 分类 LeetCode Progress 128/154 Other Solutions C++,有详细思路解释 ...Decode Ways Palindrome Partitioning II Maximal Rectangle ###Recursion N-Queens N-Queens II Balanced Binary Tree Binar
加油站 leetcode 【演示记录】 报告 展示 2017/03/06 1.二和,167....2107/03/06 15.3 总和,16.3 ...91.Decode Ways, 96.Unique Binary Search Tree, 120.Triangle, 139.Word Break, 152.Maximum Produ
leetcode怎么计算空间复杂度是指 LeetCode-Solution my first solution of LeetCode 2015-5-7 Problem 95,98(80 ...我经常在递归的结束地方忘记return!...091:Decode Ways 简单的一维DP,用额外数组O(n)即可。 139,1
扩展矩阵leetcode interview-algorithm leetCode 待解决 上楼梯问题 how many ways to decode this message @leetCode 91
Python is an easy-to-learn and extensible programming language that allows secret agents to work with a wide variety of data in a number of ways. It gives beginners a simple way to start programming, ...
题目 一条包含字母 A-Z 的消息通过以下方式进行了编码: ‘A’ -> 1 ‘B’ -> 2 … ‘Z’ -> 26 给定一个只包含数字的非空字符串...链接:https://leetcode-cn.com/problems/decode-ways 思路 这个题有点像爬楼梯,但是
Gather, analyze, and decode data to reveal hidden facts using Python, the perfect tool for all aspiring secret agents About This Book Discover the essential features of Python programming: statements...
There’s basically two ways to measure this: same-bitrate (e.g. a 500kbps VP8 file vs. a 500kbps VP9 file, where the VP9 file likely looks much better), or same-quality (e.g. a VP8 file with SSIM=...
1997 - 2003 Sergio A....and fixed it. Some minor bugs that I don‘t remember fixed.- Added MIME-compliant base64 support (not for use by now). Added examples.0.9.2.1b- Fixed a bug when send a mail and ...
Yes, this possibly is one of the worst ways to do this, //but RAM is at a premium here, and this works for most of the cases. int ICACHE_FLASH_ATTR openConn(const char *streamHost, const char *...