题解 | 把数字翻译成字符串
把数字翻译成字符串
https://www.nowcoder.com/practice/046a55e6cd274cffb88fc32dba695668
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 解码
* @param nums string字符串 数字串
* @return int整型
*/
public int solve (String nums) {
// write code here
int dp[] = new int[nums.length()];
char [] arr = nums.toCharArray();
dp[0] = 1;
if (nums.equals("0")) return 0;
for (int i = 1; i < nums.length(); i++) {
if (((arr[i - 1] - '0') * 10 + arr[i] - '0') > 26 && arr[i] != '0') {
dp[i] = dp[i - 1];
}
else if (((arr[i - 1] - '0') * 10 + arr[i] - '0') <= 26) { //
if (arr[i] == '0' && arr[i - 1] != '0') {
if (i == 1) {
dp[1] = 1;
continue;
}
dp[i] = dp[i - 2];
}
else if(arr[i] != '0' && arr[i - 1] != '0'){
if (i == 1) {
dp[1] = 2;
continue;
}
dp[i] = dp[i - 2] + dp[i - 1];
}
else if(arr[i] != '0' && arr[i - 1] == '0'){
dp[i] = dp[i - 1];
}
else{
return 0;
}
}
else {
return 0;
}
}
return dp[nums.length() - 1];
}
}
特殊分支情况,01 10 20 12 00四种情况捋清楚了 就好做了

