原題目
一條包含字母 a-z 的訊息通過以下方式進行了編碼:題目分析『a』 -> 1
『b』 -> 2
…『z』 -> 26
給定乙個只包含數字的非空字串,請計算解碼方法的總數。
示例 1:
輸入: 「12」
輸出: 2
解釋: 它可以解碼為 「ab」(1 2)或者 「l」(12)。
示例 2:
輸入: 「226」
輸出: 3
解釋: 它可以解碼為 「bz」 (2 26), 「vf」 (22 6), 或者 「bbf」 (2 2 6) 。
方法一:記憶化搜尋
方法二:一維動態規劃
方法三:常數級動態規劃
方法四:改進方法三
完整**
方法一:
int
*dp;
intdfs
(char
*s,int start)
dp[start]
=a;return a;
}int
numdecodings
(char
* s)
方法二:
int
numdecodings
(char
* s)
else
dp[i]
+=dp[i-1]
;if(i-2
>=0)
}return dp[
strlen
(s)]
;}
方法三:
int
numdecodings
(char
* s)
if(i-
1>=0)
pre=cur;
cur=temp;
}return cur;
}
方法四:
int
numdecodings
(char
* s)
return sum;
}
LeetCode91 解碼方法
這題,我花了好大的功夫才通過,中途踩了很多坑,從這個15頂25踩,通過率只有10 多,就能看出這個題,雖然是乙個中等難度的題,但是並沒有那麼好做。看到題目,感覺有點像爬樓梯的那個?想到用動態規劃。第一次寫 沒有考慮0的情況,出錯,那麼就考慮吧,如果出現在頭,就返回0,出現的中間的話。不過我是從後往前...
LeetCode 91 解碼方法
一條包含字母a z的訊息通過以下方式進行了編碼 a 1 b 2 z 26 給定乙個只包含數字的非空字串,請計算解碼方法的總數。示例 1 輸入 12 輸出 2 解釋 它可以解碼為 ab 1 2 或者 l 12 示例 2 輸入 226 輸出 3 解釋 它可以解碼為 bz 2 26 vf 22 6 或者 ...
leetcode 91 解碼方法
一條包含字母a z的訊息通過以下方式進行了編碼 a 1 b 2 z 26給定乙個只包含數字的非空字串,請計算解碼方法的總數。示例 1 輸入 12 輸出 2解釋 它可以解碼為 ab 1 2 或者 l 12 示例 2 輸入 226 輸出 3解釋 它可以解碼為 bz 2 26 vf 22 6 或者 bbf...