<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
一條包含字母 A-Z 的訊息通過以下對映進行了 編碼 :
要 解碼 已編碼的訊息,所有數位必須基於上述對映的方法,反向對映回字母(可能有多種方法)。例如,"11106" 可以對映為:
"AAJF" ,將訊息分組為 (1 1 10 6)
"KJF" ,將訊息分組為 (11 10 6)
注意,訊息不能分組為 (1 11 06) ,因為 "06" 不能對映為 "F" ,這是由於 "6" 和 "06" 在對映中並不等價。
給你一個只含數位的 非空 字串 s ,請計算並返回 解碼 方法的 總數 。
題目資料保證答案肯定是一個 32 位 的整數。
輸入:s = "12"
輸出:2
解釋:它可以解碼為 "AB"(1 2)或者 "L"(12)。
輸入:s = "226"
輸出:3
解釋:它可以解碼為 "BZ" (2 26), "VF" (22 6), 或者 "BBF" (2 2 6) 。
輸入:s = "0"
輸出:0
解釋:沒有字元對映到以 0 開頭的數位。
含有 0 的有效對映是 'J' -> "10" 和 'T'-> "20" 。
由於沒有字元,因此沒有有效的方法對此進行解碼,因為所有數位都需要對映。
提示:
1 <= s.length <= 100
s 只包含數位,並且可能包含前導零。
對於給定的字串 s ,設它的長度為 n ,其中的字元從左到右依次為 s[1],s[2],...,s[n]。我們可以使用動態規劃的方法計算出字串的解碼方法數。
具體地,設 fi表示字串s的前i個字元 s[1..i]的解碼方法數。在進行狀態轉移時,我們可以考慮最後一次解碼使用了 s中的哪些字元
class Solution { public int numDecodings(String s) { int n = s.length(); int[] f = new int[n + 1]; f[0] = 1; for (int i = 1; i <= n; ++i) { if (s.charAt(i - 1) != '0') { f[i] += f[i - 1]; } if (i > 1 && s.charAt(i - 2) != '0' && ((s.charAt(i - 2) - '0') * 10 + (s.charAt(i - 1) - '0') <= 26)) { f[i] += f[i - 2]; } } return f[n]; } }
時間複雜度:o(n)
空間複雜度:o(n)
具體的方法思路請看上文表述,本方法對空間複雜度進行了優化,通過使用臨時變數的方式,使得空間複雜度從o(n)降為o(1)
func numDecodings(s string) int { n := len(s) // a = f[i-2], b = f[i-1], c = f[i] a, b, c := 0, 1, 0 for i := 1; i <= n; i++ { c = 0 if s[i-1] != '0' { c += b } if i > 1 && s[i-2] != '0' && ((s[i-2]-'0')*10+(s[i-1]-'0') <= 26) { c += a } a, b = b, c } return c }
時間複雜度:o(n)
空間複雜度:o(1)
以上就是Go Java演演算法之解碼方法範例詳解的詳細內容,更多關於Go Java演演算法解碼的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45