Leetcode91.Decode

利用动态规划的思路,到某点的可能组合数是这点向前一位的点的组合加上这个点向前两位的点的组合(如果前两位在[1,26]的范围内),其中,F(1) = 1。
时间复杂度:O(N)
C++代码:

class Solution {
public:
	int numDecodings(string s) {
		if (s.empty())
			return 0;
		vector<int> record(s.length() + 1,0);
		if (s[0] != 0)
			record[0] = 1;
		else 
			return 0;
		int pos = 1;
		while (pos < s.length() + 1)
		{
			if (s[pos-1] == '0')
				record[pos-1] = 0;
			else
				record[pos] = record[pos - 1];
			if (pos > 1 && (s[pos - 2] == '1' || s[pos - 2] == '2' && s[pos - 1] <= '6'))
				record[pos] += record[pos - 2];
			pos++;
		}
		return record[pos - 1];
	}
};

猜你喜欢

转载自blog.csdn.net/qq_42263831/article/details/83245990