LeetCode91:Decode Ways

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.

这道题的关键是如何进行分类的问题。

设状态A[i]表示字符串前i个字符能表示的解码个数。那么它依赖于A[i-1]和A[i-2]。具体的依赖关系如下图:

LeetCode91:Decode Ways_第1张图片

runtime:4ms

class Solution {
public:
    int numDecodings(string s) {
        int length=s.size();
        if(length==0)
            return 0;
            
        int current=s[0]=='0'?0:1;
        int last=1;
        for(int i=1;i

至于为什么current的初值是s[0]=='0':0?1,last的初值为1,这个含义不是很直观,但是可以通过试验几个字符串来确定。

你可能感兴趣的:(LeetCode,LeetCode)