国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[Leetcode] Decode Ways 解碼方式

animabear / 1660人閱讀

摘要:最新更新請(qǐng)見(jiàn)動(dòng)態(tài)規(guī)劃復(fù)雜度時(shí)間空間思路解碼是有規(guī)律的,所以我們可以嘗試動(dòng)態(tài)規(guī)劃。如果字符串的第位和第位不能組成有效二位數(shù)字,而且第位不是的話,說(shuō)明我們是在第位的解碼方法上繼續(xù)解碼。

Decode Ways 最新更新請(qǐng)見(jiàn):https://yanjia.me/zh/2019/02/...

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.

動(dòng)態(tài)規(guī)劃 復(fù)雜度

時(shí)間 O(N) 空間 O(N)

思路

解碼是有規(guī)律的,所以我們可以嘗試動(dòng)態(tài)規(guī)劃。假設(shè)數(shù)組dp[i]表示從頭到字符串的第i位,一共有多少種解碼方法的話,那么如果字符串的第i-1位和第i位能組成一個(gè)10到26的數(shù)字,說(shuō)明我們是在第i-2位的解碼方法上繼續(xù)解碼。如果字符串的第i-1位和第i位不能組成有效二位數(shù)字,而且第i位不是0的話,說(shuō)明我們是在第i-1位的解碼方法上繼續(xù)解碼。所以,如果兩個(gè)條件都符合,則dp[i]=dp[i-1]+dp[i-2],否則dp[i]=dp[i-1]

注意

如果出現(xiàn)無(wú)法被兩位數(shù)接納的0,則無(wú)法解碼,我們可以在一開(kāi)始就判斷,并將其初始化為0,這樣后面的相加永遠(yuǎn)都是加0

代碼
public class Solution {
    public int numDecodings(String s) {
        if(s.length() == 0) return s.length();
        int[] dp = new int[s.length() + 1];
        // 初始化第一種解碼方式
        dp[0] = 1;
        // 如果第一位是0,則無(wú)法解碼
        dp[1] = s.charAt(0) == "0" ? 0 : 1;
        for(int i = 2; i <= s.length(); i++){
            // 如果字符串的第i-1位和第i位能組成一個(gè)10到26的數(shù)字,說(shuō)明我們可以在第i-2位的解碼方法上繼續(xù)解碼
            if(Integer.parseInt(s.substring(i-2, i)) <= 26 && Integer.parseInt(s.substring(i-2, i)) >= 10){
                dp[i] += dp[i - 2];
            }
            // 如果字符串的第i-1位和第i位不能組成有效二位數(shù)字,在第i-1位的解碼方法上繼續(xù)解碼
            if(Integer.parseInt(s.substring(i-1, i)) != 0){
                dp[i] += dp[i - 1];
            }
        }
        return dp[s.length()];
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/64607.html

相關(guān)文章

  • [LintCode/LeetCode] Decode Ways [String to Integer

    摘要:用將子字符串轉(zhuǎn)化為,參見(jiàn)和的區(qū)別然后用動(dòng)規(guī)方法表示字符串的前位到包含方法的個(gè)數(shù)。最后返回對(duì)應(yīng)字符串末位的動(dòng)規(guī)結(jié)果。 Problem A message containing letters from A-Z is being encoded to numbers using the following mapping: A -> 1 B -> 2 ... Z -> 26 Given ...

    andong777 評(píng)論0 收藏0
  • leetcode-91-Decode Ways

    摘要:經(jīng)總結(jié),發(fā)現(xiàn)當(dāng)前字符前面的兩個(gè)字符和一個(gè)字符可以拿出來(lái)進(jìn)行分析。當(dāng)前的數(shù)目可以作為和的數(shù)目的疊加。所以關(guān)系式是其他的特殊情況可以進(jìn)行特殊處理。需要注意的是如果錢兩位是,,則這兩位作廢,不能計(jì)入其他情況的統(tǒng)計(jì),即。 描述 A message containing letters from A-Z is being encoded to numbersusing the following...

    sihai 評(píng)論0 收藏0
  • [Leetcode] Encode and Decode Strings 字符串編解碼

    摘要:記錄長(zhǎng)度法復(fù)雜度時(shí)間空間思路本題難點(diǎn)在于如何在合并后的字符串中,區(qū)分出原來(lái)的每一個(gè)子串。這里我采取的編碼方式,是將每個(gè)子串的長(zhǎng)度先賦在前面,然后用一個(gè)隔開(kāi)長(zhǎng)度和子串本身。這樣我們先讀出長(zhǎng)度,就知道該讀取多少個(gè)字符作為子串了。 Encode and Decode Strings Design an algorithm to encode a list of strings to a s...

    gself 評(píng)論0 收藏0
  • LeetCode 394:字符串解碼 Decode String

    摘要:用棧暫存的邏輯與遞歸基本一致,可以理解為用遞歸實(shí)現(xiàn)棧。沒(méi)有棧這種數(shù)據(jù)結(jié)構(gòu),可以用數(shù)組或雙端隊(duì)列可以只用一個(gè)棧以元組的形式重復(fù)次數(shù)和字符串,如利用棧初始化數(shù)據(jù)結(jié)構(gòu)遞歸字符串入棧刷新計(jì)算重復(fù)次數(shù)可直接操作字符串真的很方便。 題目: 給定一個(gè)經(jīng)過(guò)編碼的字符串,返回它解碼后的字符串。Given an encoded string, return its decoded string. 編碼規(guī)則...

    鄒強(qiáng) 評(píng)論0 收藏0
  • leetcode394. Decode String

    摘要:利用棧我們可以存儲(chǔ)外圍層已持有的字符串以及應(yīng)當(dāng)展開(kāi)的次數(shù)。用棧的思路來(lái)寫(xiě)要求思路更加嚴(yán)謹(jǐn),以免出現(xiàn)邏輯錯(cuò)誤。這里需要額外注意的是,如果當(dāng)前該括號(hào)外圍存在父元素,則我們應(yīng)當(dāng)將父元素的計(jì)數(shù)和已有字符串壓入棧中。 題目要求 Given an encoded string, return its decoded string. The encoding rule is: k[encoded_...

    Ilikewhite 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<