题解 | #把数字翻译成字符串#
把数字翻译成字符串
https://www.nowcoder.com/practice/046a55e6cd274cffb88fc32dba695668
class Solution {
public:
int solve(string nums) {
if (nums.empty() || nums[0] == '0') return 0;
int n = nums.size();
vector<int> dp(n + 1, 0);
dp[0] = 1; // 空字符串有一种解码方式
dp[1] = 1; // 一个有效的数字(非0)有一种解码方式
for (int i = 2; i <= n; i++) {
int oneDigit = nums[i - 1] - '0';
int twoDigits = (nums[i - 2] - '0') * 10 + oneDigit;
if (oneDigit >= 1 && oneDigit <= 9) {
dp[i] += dp[i - 1];
}
if (twoDigits >= 10 && twoDigits <= 26) {
dp[i] += dp[i - 2];
}
}
return dp[n];
}
};
查看8道真题和解析
