leetcode解码方法(动态规划python)
生活随笔
收集整理的這篇文章主要介紹了
leetcode解码方法(动态规划python)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
描述
有一個消息包含A-Z通過以下規則編碼
‘A’ -> 1
‘B’ -> 2
…
‘Z’ -> 26
現在給你一個加密過后的消息,問有幾種解碼的方式
我們不能解碼空串,因此若消息為空,你應該返回0。
消息的長度 n \leq 100n≤100
您在真實的面試中是否遇到過這個題?
樣例
樣例 1:
輸入: “12”
輸出: 2
解釋: 它可以被解碼為 AB (1 2) 或 L (12).
樣例 2:
輸入: “10”
輸出: 1
思路
動態規劃,從s的位置1讀起,每次讀取兩個數,因為只要是1-9的數,都可以單獨出現,因此,dp表可以初始化為1,為了避免第二個條件[i-1]無法執行,我們使得dp表從位置2開始修改,dp位置0,1的值都初始化為1
情況
#特殊情況 輸入’’ 則無法解碼,可直接返回 0
#輸入0 則無法解碼,可直接返回 0
#若為 00 或 30、40、50… 則無法解碼,可直接返回 0
#為 10、20 的情況,則 i 處字符必須與前一位結合,則為雙字符解碼
dp[i + 1] = dp[i - 1]
若數字為10-26:既可以單字解碼,又可以雙字解碼 dp[i + 1] = dp[i] + dp[i - 1]
#1-9,27-29、31-39、41~49…只能單字解碼 dp[i + 1] = dp[i]
結果:
1
3
0
總結
以上是生活随笔為你收集整理的leetcode解码方法(动态规划python)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电力负荷事件划分(有代码)
- 下一篇: leetcode 分饼干 贪心算法pyt