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