日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

125. Leetcode 91. 解码方法 (动态规划- 字符串系列)

發(fā)布時(shí)間:2025/4/5 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 125. Leetcode 91. 解码方法 (动态规划- 字符串系列) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

步驟一、確定狀態(tài):

確定dp數(shù)組及下標(biāo)含義 dp[i]表示的是到i這個(gè)位置的字符串的解碼方法

步驟二、推斷狀態(tài)方程:

dp[i]的推導(dǎo)會(huì)取決于當(dāng)前s[i]的字符情況以及前一位字符,具體如下:

如果當(dāng)前的s[i]=='0': 這說明自己無法單獨(dú)解碼,需要跟著前面一位進(jìn)行解碼,但是這 時(shí)候前面的一位必須是1或者2, 此時(shí)dp[i]=dp[i-2](下標(biāo)為1處單獨(dú)判斷),否則此串無 法解碼,返回0

如果前面的s[i-1]=='1': 這說明當(dāng)前的s[i]可以自己解碼,也可以和前面的一塊解碼,所 以解碼方法是dp[i] = dp[i-1] + dp[i-2](下標(biāo)為1處單獨(dú)判斷)

dp[i-1]表示自己解碼,dp[i-2]表示和前面一塊解碼

如果前面的s[i-1]=='2'且當(dāng)前的s[i]在1-6之間: 這時(shí)候s[i]同樣可以單獨(dú)解碼,可以和 前面一塊解碼,動(dòng)態(tài)方程和上面一樣

除去上面這些特征情況,剩下的就是是s[i]單獨(dú)解碼的情況了,此時(shí)dp[i]=dp[i-1]

步驟三、規(guī)定初始條件:

初始條件:

全局初始化為0

步驟四、計(jì)算順序: 從1開始正向遍歷

class Solution:def numDecodings(self, s: str) -> int:if len(s) == 0 or s[0] == "0":return 0dp = [0 for i in range(len(s))]dp[0] = 1for i in range(1, len(s)):if s[i] == '0':if s[i-1] not in ['1','2']:return 0if i == 1:dp[i] = 1else:dp[i] = dp[i-2]elif s[i-1] == '1' or s[i-1] == '2' and s[i] in ['1','2','3','4','5','6']:if i == 1:dp[i] = 2else:dp[i] = dp[i-1] + dp[i-2]else:dp[i] = dp[i-1]return dp[-1]

總結(jié)

以上是生活随笔為你收集整理的125. Leetcode 91. 解码方法 (动态规划- 字符串系列)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。