这道题可以看作是动态规划类的题目,类似于跳台阶的题目。
例如:12258
状态转移方程:dp[i] = dp[i+1] + dp[i+2]
class Solution {
public:
int translateNum(int num) {
string str = to_string(num);
vector<int> nums(str.length());
int count = 0;
int length = str.length()-1;
for(int i = length;i > -1; i--){
count = i < length ? nums[i+1] : 1;
if(i < length){
int dit_1 = str[i] - '0';
int dit_2 = str[i+1] - '0';
int num = dit_1*10 + dit_2;
if(num >= 10 && num <= 25){
if(i < length-1){
count += nums[i+2];
}else{
count += 1;
}
}
}
nums[i] = count;
}
return nums[0];
}
};
本文探讨了如何使用动态规划解决数字翻译问题,通过将数字转换为字符串,并利用状态转移方程dp[i]=dp[i+1]+dp[i+2]进行求解。详细介绍了算法的实现过程,包括逆向遍历字符串,检查子串是否在10到25之间,以及更新dp数组等关键步骤。
1273

被折叠的 条评论
为什么被折叠?



