本文共 586 字,大约阅读时间需要 1 分钟。
原题链接:
相似题目:
动态规划:
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) { mapmp; for (int i = 0; i < 26; i++) { mp[i] = 'a' + i; } string s = to_string(num); int n = s.size(); vector 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];}
转载地址:http://opxcn.baihongyu.com/