91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go?Java算法之解碼方法實例代碼分析

發布時間:2022-08-24 16:19:30 來源:億速云 閱讀:126 作者:iii 欄目:開發技術

本篇內容介紹了“Go Java算法之解碼方法實例代碼分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

解碼方法

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

  • 'A' -> "1"

  • 'B' -> "2"

  • ...

  • 'Z' -> "26"

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

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

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

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

給你一個只含數字的 非空 字符串 s ,請計算并返回 解碼 方法的 總數 。

題目數據保證答案肯定是一個 32 位 的整數。

  • 示例 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 開頭的數字。

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

由于沒有字符,因此沒有有效的方法對此進行解碼,因為所有數字都需要映射。  

提示:

1 <= s.length <= 100

s 只包含數字,并且可能包含前導零。

方法一:動態規劃(Java)

對于給定的字符串 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)

方法二:動態規劃&mdash;&mdash;優化(go)

具體的方法思路請看上文表述,本方法對空間復雜度進行了優化,通過使用臨時變量的方式,使得空間復雜度從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算法之解碼方法實例代碼分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海门市| 米林县| 云霄县| 明溪县| 临安市| 卢氏县| 博乐市| 鄄城县| 蒲城县| 沾化县| 梅州市| 城步| 津南区| 苍南县| 汕尾市| 盈江县| 河曲县| 文水县| 临江市| 兴安盟| 新河县| 临西县| 榆中县| 新闻| 兴文县| 古蔺县| 焦作市| 晋江市| 沈阳市| 时尚| 永平县| 颍上县| 安国市| 衡东县| 南涧| 阆中市| 土默特右旗| 嘉祥县| 伊吾县| 甘南县| 荆门市|