最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go Java算法之解碼方法示例詳解

 更新時(shí)間:2022年08月20日 16:36:49   作者:黃丫丫  
這篇文章主要為大家介紹了Go Java算法之解碼方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

解碼方法

一條包含字母 A-Z 的消息通過以下映射進(jìn)行了 編碼 :

  • 'A' -> "1"
  • 'B' -> "2"
  • ...
  • 'Z' -> "26"

要 解碼 已編碼的消息,所有數(shù)字必須基于上述映射的方法,反向映射回字母(可能有多種方法)。例如,"11106" 可以映射為:

"AAJF" ,將消息分組為 (1 1 10 6)

"KJF" ,將消息分組為 (11 10 6)

注意,消息不能分組為  (1 11 06) ,因?yàn)?"06" 不能映射為 "F" ,這是由于 "6" 和 "06" 在映射中并不等價(jià)。

給你一個(gè)只含數(shù)字的 非空 字符串 s ,請(qǐng)計(jì)算并返回 解碼 方法的 總數(shù) 。

題目數(shù)據(jù)保證答案肯定是一個(gè) 32 位 的整數(shù)。

  • 示例 1:

輸入:s = "12"

輸出:2

解釋:它可以解碼為 "AB"(1 2)或者 "L"(12)。

  • 示例 2:

輸入:s = "226"

輸出:3

解釋:它可以解碼為 "BZ" (2 26), "VF" (22 6), 或者 "BBF" (2 2 6) 。

  • 示例 3:

輸入:s = "0"

輸出:0

解釋:沒有字符映射到以 0 開頭的數(shù)字。

含有 0 的有效映射是 'J' -> "10" 和 'T'-> "20" 。

由于沒有字符,因此沒有有效的方法對(duì)此進(jìn)行解碼,因?yàn)樗袛?shù)字都需要映射。  

提示:

1 <= s.length <= 100

s 只包含數(shù)字,并且可能包含前導(dǎo)零。

方法一:動(dòng)態(tài)規(guī)劃(Java)

對(duì)于給定的字符串 s ,設(shè)它的長(zhǎng)度為 n ,其中的字符從左到右依次為 s[1],s[2],...,s[n]。我們可以使用動(dòng)態(tài)規(guī)劃的方法計(jì)算出字符串的解碼方法數(shù)。

具體地,設(shè) fi表示字符串s的前i個(gè)字符 s[1..i]的解碼方法數(shù)。在進(jìn)行狀態(tài)轉(zhuǎn)移時(shí),我們可以考慮最后一次解碼使用了 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];
    }
}

時(shí)間復(fù)雜度:o(n)

空間復(fù)雜度:o(n)

方法二:動(dòng)態(tài)規(guī)劃——優(yōu)化(go)

具體的方法思路請(qǐng)看上文表述,本方法對(duì)空間復(fù)雜度進(jìn)行了優(yōu)化,通過使用臨時(shí)變量的方式,使得空間復(fù)雜度從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
}

時(shí)間復(fù)雜度:o(n)

空間復(fù)雜度:o(1)

以上就是Go Java算法之解碼方法示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Go Java算法解碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解Maven settings.xml配置(指定本地倉(cāng)庫、阿里云鏡像設(shè)置)

    詳解Maven settings.xml配置(指定本地倉(cāng)庫、阿里云鏡像設(shè)置)

    這篇文章主要介紹了詳解Maven settings.xml配置(指定本地倉(cāng)庫、阿里云鏡像設(shè)置),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • Java編程實(shí)現(xiàn)直接插入排序代碼示例

    Java編程實(shí)現(xiàn)直接插入排序代碼示例

    這篇文章主要介紹了Java編程實(shí)現(xiàn)直接插入排序代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • java  Swing基礎(chǔ)教程之圖形化實(shí)例代碼

    java Swing基礎(chǔ)教程之圖形化實(shí)例代碼

    這篇文章主要介紹了java Swing基礎(chǔ)教程之圖形化實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • springboot?maven?plugin報(bào)紅的解決辦法

    springboot?maven?plugin報(bào)紅的解決辦法

    本文主要介紹了springboot?maven?plugin報(bào)紅的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • SpringBoot+Spring Security基于內(nèi)存用戶認(rèn)證的實(shí)現(xiàn)

    SpringBoot+Spring Security基于內(nèi)存用戶認(rèn)證的實(shí)現(xiàn)

    本文介紹了SpringBoot+Spring Security基于內(nèi)存用戶認(rèn)證的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • Java8新特性之默認(rèn)方法和靜態(tài)方法

    Java8新特性之默認(rèn)方法和靜態(tài)方法

    這篇文章主要給大家介紹了關(guān)于Java8新特性之默認(rèn)方法和靜態(tài)方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 解決springboot與springcloud版本兼容問題(附版本兼容表)

    解決springboot與springcloud版本兼容問題(附版本兼容表)

    在基于spring boot搭建spring cloud時(shí),創(chuàng)建eureka后啟動(dòng)服務(wù)發(fā)生報(bào)錯(cuò),本文給大家介紹了解決springboot與springcloud版本兼容問題的幾種方案,需要的朋友可以參考下
    2024-02-02
  • MyBatis-Plus詳解(環(huán)境搭建、關(guān)聯(lián)操作)

    MyBatis-Plus詳解(環(huán)境搭建、關(guān)聯(lián)操作)

    MyBatis-Plus 是一個(gè) MyBatis 的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開發(fā)、提高效率而生,今天通過本文給大家介紹MyBatis-Plus環(huán)境搭建及關(guān)聯(lián)操作,需要的朋友參考下吧
    2022-09-09
  • SpringBoot2.0實(shí)現(xiàn)多圖片上傳加回顯

    SpringBoot2.0實(shí)現(xiàn)多圖片上傳加回顯

    這兩天公司有需求讓做一個(gè)商戶注冊(cè)的后臺(tái)功能,其中需要商戶上傳多張圖片并回顯,本文就使用SpringBoot2.0實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-07-07
  • 詳解Java多線程和IO流的應(yīng)用

    詳解Java多線程和IO流的應(yīng)用

    這篇文章主要介紹了詳解Java多線程和IO流的應(yīng)用,無論是本地文件復(fù)制,還是網(wǎng)絡(luò)多線程下載,對(duì)于流的使用都是一樣的,需要的朋友可以參考下
    2023-04-04

最新評(píng)論

南靖县| 武隆县| 武陟县| 鸡东县| 苍溪县| 清原| 定州市| 巴南区| 化州市| 甘孜县| 临桂县| 丹巴县| 清丰县| 德惠市| 科尔| 阿坝县| 耒阳市| 名山县| 海盐县| 玛曲县| 正定县| 历史| 安多县| 惠安县| 手游| 榆中县| 安阳市| 响水县| 三台县| 灯塔市| 定安县| 界首市| 香格里拉县| 长宁县| 洛阳市| 盘锦市| 宁陵县| 鸡东县| 来凤县| 广南县| 奎屯市|