Leetcode 91. Decode Ways

A message containing letters from A-Z is being encoded to numbers using the following mapping:
'A' -> 1
'B' -> 2
...
'Z' -> 26
Given an encoded message containing digits, determine the total number of ways to decode it.

For example,
Given encoded message "12", it could be decoded as "AB" (1 2) or "L" (12).
The number of ways decoding "12" is 2.

題意:如果從A到Z可以按1-26進(jìn)行編碼其爵,那么給出一串?dāng)?shù)字瘫想,有多少種解碼方式?

思路:
例如給出1221,如果從頭開始用深度搜索的方式找,對于每一位,都有可能有兩種解碼方法,時間復(fù)雜度將會非常高。
換一種角度榨馁,對于以每一位結(jié)尾的字符串來說,它的解碼方法和前面數(shù)字串解碼的方式相關(guān)帜矾,有點像jump那道題翼虫,可以用動態(tài)規(guī)劃的方法解決屑柔。
以dp[n]表示從頭到第n-1位有多少種解碼方法,如果當(dāng)前位置n的數(shù)字是1-9珍剑,那么dp[n] += dp[n-1]掸宛,如果n-1位不等于0并且和n位組合起來的數(shù)字小于等于26,dp[n] += dp[n-2]招拙。dp[0]需要初始化為1唧瘾,因為計算dp[2]時,如果前兩位組合是一個合法的編碼别凤,將需要dp[0]饰序。

public int numDecodings(String s) {
    if (s == null || s.length() == 0) {
        return 0;
    }

    int len = s.length();
    int[] dp = new int[len + 1];
    dp[0] = 1;
    dp[1] = s.charAt(0) != '0' ? 1 : 0;
    for (int i = 2; i <= len; i++) {
        if (s.charAt(i-1) != '0') {
            dp[i] += dp[i-1];
        }
        if (s.charAt(i-2) != '0' && Integer.valueOf(s.substring(i-2, i)) <= 26) {
            dp[i] += dp[i-2];
        }
    }

    return dp[len];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市规哪,隨后出現(xiàn)的幾起案子求豫,更是在濱河造成了極大的恐慌,老刑警劉巖诉稍,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝠嘉,死亡現(xiàn)場離奇詭異,居然都是意外死亡均唉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門肚菠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舔箭,“玉大人,你說我怎么就攤上這事蚊逢〔惴觯” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵烙荷,是天一觀的道長镜会。 經(jīng)常有香客問我,道長终抽,這世上最難降的妖魔是什么戳表? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮昼伴,結(jié)果婚禮上匾旭,老公的妹妹穿的比我還像新娘。我一直安慰自己圃郊,他們只是感情好价涝,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著持舆,像睡著了一般色瘩。 火紅的嫁衣襯著肌膚如雪伪窖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天居兆,我揣著相機(jī)與錄音覆山,去河邊找鬼。 笑死史辙,一個胖子當(dāng)著我的面吹牛汹买,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播聊倔,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼晦毙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了耙蔑?” 一聲冷哼從身側(cè)響起见妒,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎甸陌,沒想到半個月后须揣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡钱豁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年耻卡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牲尺。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡卵酪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谤碳,到底是詐尸還是另有隱情溃卡,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布蜒简,位于F島的核電站瘸羡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏搓茬。R本人自食惡果不足惜犹赖,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卷仑。 院中可真熱鬧冷尉,春花似錦、人聲如沸系枪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至雾棺,卻和暖如春膊夹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捌浩。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工放刨, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人尸饺。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓进统,卻偏偏與公主長得像,于是被迫代替她去往敵國和親浪听。 傳聞我的和親對象是個殘疾皇子螟碎,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 題目 A message containing letters from A-Z is being encoded...
    persistent100閱讀 507評論 0 0
  • LeetCode 91 Decode Ways A message containing letters from...
    ShuiLocked閱讀 1,174評論 1 0
  • 原題 有一個消息包含A-Z通過以下規(guī)則編碼 現(xiàn)在給你一個加密過后的消息,問有幾種解碼的方式 樣例給你的消息為12迹栓,...
    Jason_Yuan閱讀 789評論 0 0
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗掉分。 張土汪:刷leetcod...
    土汪閱讀 12,747評論 0 33
  • 也許是天氣太過于燥熱,心情格外煩悶克伊,友人約我出去走走酥郭,我毫不猶豫的答應(yīng)了。我才知道愿吹,距離我工作的縣城不从,不過十幾公里...
    不喜灰閱讀 486評論 0 3