题解 | #把数字翻译成字符串#
把数字翻译成字符串
https://www.nowcoder.com/practice/046a55e6cd274cffb88fc32dba695668
class Solution {
public:
/**
* 解码
* @param nums string字符串 数字串
* @return int整型
*/
int solve(string nums) {
// BUG1:dp[0]应为1
vector<int> dp(nums.length() + 1, 1);
// BUG2:输入0
if (nums[0] == '0') {
return 0;
}
for (int i = 2; i < nums.length() + 1; i++) {
int front = nums[i - 2] - '0';
// numI==0是特例
int numI = nums[i - 1] - '0';
int num = front * 10 + numI;
// BUG3\4:连续两个0,60
if (num == 0 || (numI == 0 && num > 20)) {
return 0;
}
// BUG5:07应该判断
if (num < 27 && (num != 10) && (num != 20) && front != 0) {
// 此处容易推错dp[i]是指前i位组合数
dp[i] = dp[i - 1] + dp[i - 2];
} else {
dp[i] = dp[i - 1];
}
}
return dp[nums.length()];
}
};
有够恶心的一道题,特殊情况太多,条理不清晰会出很多BUG。对于数字0的理解处理也是难点。
另外我在递推公式处就出错了。。。。。。难绷
#我的求职思考##0offer是寒冬太冷还是我太菜#