美文网首页程序员
力扣 91 解码方法

力扣 91 解码方法

作者: zhaojinhui | 来源:发表于2020-08-17 11:40 被阅读0次

题意:给定一个字符串,里边是0-9的字符,数字的组合解码成a-z,求它的所有解码组合

思路:设一个dp数组,来记录当前index的组合数,设一个pre来记录上一个遍历到的数

  1. 当当前数是0,如果上一个数不是1和2,那么数组违法,返回0,否则dp[i] = dp[i-2],因为i-1和i只能和在一起组成“10”或“20”
  2. 当pre是1时,那么dp[i] = dp[i-1]+dp[i-2],因为当前数即可以自己算一个字符,也可以和1一起组成一个字符
  3. 当pre时2时,
    如果cur是1-6,那么dp[i] = dp[i-1]+dp[i-2],因为当前数即可以自己算一个字符,也可以和1一起组成一个字符
    否则 dp[i] = dp[i-1],因为当前数只能自己算一个字符
  4. 对于其他情况dp[i] = dp[i-1],因为当前数只能自己算一个字符

思想:动态规划

复杂度:时间O(n),空间O(n)

class Solution {
    public int numDecodings(String s) {
        int len = s.length();
        if(len == 0)
            return 0;
        int[] dp = new int[len+1];
        int pre = 0;
        dp[0] = 1;
        for(int i=1;i<=len;i++) {
            int cur = s.charAt(i-1) - '0';
            if(cur == 0) {
                if(pre != 1 && pre != 2) {
                    return 0;
                }
                dp[i] = dp[i-2];
            } else if(pre == 1) {
                dp[i] = dp[i-1] + dp[i-2];
            } else if(pre == 2) {
                if(cur>=1&&cur<=6)
                    dp[i] = dp[i-1] + dp[i-2];
                else 
                    dp[i] = dp[i-1];
            } else {
                dp[i] = dp[i-1];
            }
            pre = cur;
        }
        return dp[len];
    }
}

相关文章

  • 力扣 91 解码方法

    题意:给定一个字符串,里边是0-9的字符,数字的组合解码成a-z,求它的所有解码组合 思路:设一个dp数组,来记录...

  • LeetCode 力扣 91. 解码方法

    題目描述(中等难度) 每个数字对应一个字母,给一串数字,问有几种解码方式。例如 226 可以有三种,2|2|6,2...

  • LeetCode 力扣 91. 解码方法

    題目描述(中等难度) 每个数字对应一个字母,给一串数字,问有几种解码方式。例如 226 可以有三种,2|2|6,2...

  • LeetCode-91-解码方法

    LeetCode-91-解码方法 91. 解码方法[https://leetcode-cn.com/problem...

  • Leetcode 解码方法

    题目描述 leetcode 第91题:解码方法[https://leetcode-cn.com/problems/...

  • 91. 解码方法

    题目 代码

  • 91.解码方法

    题目一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1'B' -> 2...'Z' -> 26...

  • 91. 解码方法

    91. 解码方法 一条包含字母 A-Z 的消息通过以下方式进行了编码: 给定一个只包含数字的非空字符串,请计算解码...

  • 91.解码方法

    原题 https://leetcode-cn.com/problems/decode-ways/ 解题思路 动态规...

  • LeetCode - #91 解码方法

    前言 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swi...

网友评论

    本文标题:力扣 91 解码方法

    本文链接:https://www.haomeiwen.com/subject/qkafjktx.html