LeetCode Decode Way

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.

class Solution {
public:
    int numDecodings(string s) {
        if(s.size() == 0)
            return 0;   
        int len = s.size();
        
         int *rs = new int[len];
		memset(rs,0,len*sizeof(int));
        if(s[len-1]!='0')
			rs[len-1] = 1;
        else
            rs[len-1] = 0;

        if(len==1 && rs[len-1]==0)
            return 0;

        int tmp = 1;

        for(int i = len-2;i>=0;--i)
        {
            if(s[i] != '0')
                rs[i] = rs[i+1];
            if( (s[i]=='2' && s[i+1]<='6') || s[i]=='1')
			{
				rs[i] = rs[i+1]+tmp;
			}
			tmp = rs[i+1];
			if(s[i]=='0' && s[i+1]=='0')
				return 0;
        }
        int sum = rs[0];
        delete rs;
        return sum;
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章