AcWing 59. 把数字翻译成字符串
原题链接
中等
作者:
adamXu
,
2020-09-30 08:05:28
,
所有人可见
,
阅读 382
class Solution {
public:
int getTranslationCount(string s) {
//思路,dp,dp[i]为第i个数有几种表示方式,if组合为01 02这类,只能为Dp[i] = dp[i-1],if 10-25
//dp[i] = dp[i-1] + dp[i-2]
if(!s.size()) 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 = (s[i - 2] - '0') * 10 + (s[i - 1] - '0'); //是s[i-2]*10 + s[i-1]而非s[i-1]*10+s[i-2]
if(k >= 10 && k <= 25) dp[i] += dp[i - 2];
}
return dp[n];
}
};