题解 | #把数字翻译成字符串#Java动态规划

把数字翻译成字符串

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

思路:动态规划

  1. 当前解码的可能情况为i-1或i-2时得到。 故dp定义dp[i]为前i个字符可能的编码数,dp[i] = dp[i-1] + dp[i-2];
  2. 特殊情况,当i和i-1组合成的数不在10 - 26范围时,只能由dp[i-1]得到。
  3. 当dp[i]=0时,表示存在非法字符,直接返回0.
import java.util.*;


public class Solution {
    /**
     * 解码
     * @param nums string字符串 数字串
     * @return int整型
     */
    public int solve (String nums) {
        // write code here
        char[] arr = nums.toCharArray();
        int n = arr.length;
        int[] dp = new int[n + 1];
        dp[0] = 1;
        dp[1] = arr[0] != '0' ? 1 : 0;
        for (int i = 1; i < n; i++) {
            if (arr[i] != '0') {
                dp[i+1] = dp[i];
            }
            if (arr[i-1] == '1'
            || (arr[i-1] == '2' && arr[i] >= '0' && arr[i] <= '6')) {
                dp[i+1] += dp[i-1];
            }
            if (dp[i+1] == 0) return 0;
        }
        return dp[n];
    }
}
全部评论

相关推荐

11-03 15:31
门头沟学院 Java
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你
投递大连飞创信息技术有限公司等公司10个岗位
点赞 评论 收藏
分享
迷茫的大四🐶:看来已经准备换人了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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