AcWing 59. 把数字翻译成字符串
原题链接
中等
作者:
adamXu
,
2020-10-07 13:00:32
,
所有人可见
,
阅读 363
class Solution {
public:
int getTranslationCount(string s) {
//dp[i] 表示第i个字符有多少种排法,如果s[i-2]s[i-1] 在10-25之间,说明dp[i] = dp[i-1]+
//dp[i-2],因为除了dp[i-1]外dp[i-2]也构成一种合法序列,否则dp[i] = dp[i-1],因为
//此时dp[i-2]不合法
if(s.empty()) return 0;
int n = s.size();
vector<int> dp(n + 1);
dp[0] = 1;
dp[1] = 1;
for(int i = 2;i <= n;++i){
dp[i] = dp[i-1];
int k = 10 * (s[i - 2] - '0') + (s[i - 1] - '0');
if(k >= 10 && k <= 25) dp[i] += dp[i - 2];
}
return dp[n];
}
};