题解 | 把数字翻译成字符串

把数字翻译成字符串

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四种情况捋清楚了 就好做了

全部评论

相关推荐

11-20 13:39
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务