原题链接:https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/
相似题目:解码方法
动态规划:
dp[i]表示以位置i为结尾的字符串情况有多少种状态转移
dp[i] = dp[i - 1] + dp[i - 2] //当s[i - 1]s[i]构成字符串 dp[i] = dp[i - 1] //当s[i - 1]s[i]不构成字符串代码:
int translateNum(int num) { map<int, char> mp; for (int i = 0; i < 26; i++) { mp[i] = 'a' + i; } string s = to_string(num); int n = s.size(); vector<int> dp(n + 1, 0); dp[0] = 1; dp[1] = 1; for (int i = 1; i < n; i++) { string str = s.substr(i - 1, 2); dp[i + 1] += dp[i]; if (str[0] != '0' && mp.count(stoi(str))) dp[i + 1] += dp[i - 1]; //当str[0]不等于0时,否则str为小于10整数 } return dp[n]; }