【Leetcode】Decode Ways

题目链接:https://leetcode.com/problems/decode-ways/

题目:

A message containing letters from A-Z is being encoded to numbers using the following
mapping:

‘A‘ -> 1
‘B‘ -> 2
...
‘Z‘ -> 26

Given an encoded message containing digits, determine the total number of ways to decode it.

For example,

Given encoded message "12", it could be decoded as "AB" (1
2) or "L" (12).

The number of ways decoding "12" is 2.

思路:

类似于爬楼梯题目。

算法

public int numDecodings(String s) {
    if (s.length() == 0)
        return 0;
    char sc[] = s.toCharArray();
    if (sc[0] == '0')
        return 0;
    int c[] = new int[s.length()];
    c[0] = 1;  

    for (int i = 1; i < sc.length; i++) {  

        if ((sc[i - 1] == '2' && sc[i] >= '1' && sc[i] <= '6') || (sc[i - 1] == '1' && sc[i] != '0')) {
            if (i + 1 < sc.length && sc[i + 1] == '0') {
                c[i] = c[i - 1];
            } else if (i - 2 >= 0) {
                c[i] = c[i - 1] + c[i - 2];// 类似爬楼梯题
            } else {
                c[i] = c[i - 1] + 1;
            }
        } else if (sc[i] == '0' && sc[i - 1] == '0') {
            return 0;
        } else if (sc[i] == '0' && sc[i - 1] > '2') {
            return 0;
        } else {
            c[i] = c[i - 1];
        }
    }
    return c[s.length() - 1];
}  
时间: 2024-10-06 10:50:26

【Leetcode】Decode Ways的相关文章

【leetcode】Decode Ways(medium)

A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 Given an encoded message containing digits, determine the total number of ways to decode it. For example,Given encoded

【Leetcode】Decode Ways (DP)

A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 Given an encoded message containing digits, determine the total number of ways to decode it. For example, Given encoded

【Leetcode】Different Ways to Add Parentheses

题目链接: 题目: Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are+, - and *. Example 1 Input: "2-1-1". ((2-1)-1) = 0 (2-(1-1)) =

【LeetCode】动态规划(下篇共39题)

[600] Non-negative Integers without Consecutive Ones [629] K Inverse Pairs Array [638] Shopping Offers [639] Decode Ways II [646] Maximum Length of Pair Chain [647] Palindromic Substrings [650] 2 Keys Keyboard [651] 4 Keys Keyboard [656] Coin Path [6

【LeetCode】动态规划(下篇)

[600] Non-negative Integers without Consecutive Ones [629] K Inverse Pairs Array [638] Shopping Offers [639] Decode Ways II [646] Maximum Length of Pair Chain [647] Palindromic Substrings [650] 2 Keys Keyboard [651] 4 Keys Keyboard [656] Coin Path [6

【LeetCode】动态规划(上篇共75题)

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica } [5] Longest Palindromic Substring 给一个字符串,需要返回最长回文子串 解法:dp[i][j] 表示 s[i..j] 是否是回文串,转移方程是 dp[i][j] = 1 (if dp[i+1][j-1] = 1 && s[i] == s[j]),初始化条件是 if (s[i] == s[j] && (i == j

【LeetCode】字符串 string(共112题)

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica } [3]Longest Substring Without Repeating Characters [5]Longest Palindromic Substring [6]ZigZag Conversion [8]String to Integer (atoi) [10]Regular Expression Matching [12]Integer to Roman

【leetcode刷题笔记】Decode Ways

A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 Given an encoded message containing digits, determine the total number of ways to decode it. For example,Given encoded

【LeetCode】Remove Duplicates from Sorted Array 解题报告

[LeetCode]Remove Duplicates from Sorted Array 解题报告 标签(空格分隔): LeetCode [LeetCode] https://leetcode.com/problems/remove-duplicates-from-sorted-array/ Total Accepted: 129010 Total Submissions: 384622 Difficulty: Easy Question Given a sorted array, remov