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

把数字翻译成字符串

https://www.nowcoder.com/practice/046a55e6cd274cffb88fc32dba695668

import java.util.*;


public class Solution {
   
   //解码:第i个字符结尾有多少种编码方式
   //解码:i 单独解码,i与i-1结合解码,解码成功或失败
    public int solve (String nums) {
        // write code here
        //1.创建dp
        int n= nums.length();
        int[] dp = new int[n];
        char[] c = nums.toCharArray();
        //2。初始化, 要初始化前两个,防止越界
        //单独解码
        if(c[0]!='0') dp[0] +=1;  //解码成功

        if(n==1) return dp[0];  //长度为1

         //单独解码
         if(c[0]!='0'&&c[1]!='0') dp[1] +=1;
        //合并解码
        int t = (c[0]-'0')  *10 +c[1]-'0';
        if(t>=10&&t<=26) dp[1] +=1;

        //3.填表 dp[i] = dp[i-1] +dp[i-2]
        for(int i=2;i<n;i++){

            if(c[i]!='0') dp[i] += dp[i-1];

            int tt = (c[i-1]-'0')  *10 +c[i]-'0';
            if(tt>=10&&tt<=26) dp[i] +=dp[i-2];

        }

        return dp[n-1];
    }
}

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务