九章演算法 Google 面試題 解碼方法

2021-10-11 04:09:27 字數 981 閱讀 1118

有乙個訊息包含​a-z​通過以下規則編碼

'a' -> 1

'b' -> 2

...'z' -> 26

現在給你乙個加密過後的訊息,問有幾種解碼的方式

樣例 1:

輸入: "12"

輸出: 2

解釋: 它可以被解碼為 ab (1 2) 或 l (12).

樣例 2:

輸入: "10"

輸出: 1

演算法:動態規劃(dp)

演算法思路

**思路

複雜度分析

n表示字串長度

public

class

solution

//陣列初值均為0,dp[0] = dp[1] = 1

//dp[i]表示字串的前i位解碼有多少種解碼方式

intn=s

.length

();int

dp=newint[n

+1];dp[0

]=dp[

1]=1

;for

(inti=

2;i<=n;

i++)

//若s[i - 2]和s[i - 1]表示的數是10到26if(

s.charat(i

-2)!=

'0'&&(s

.charat(i

-2)-

'0')*10

+s.charat(i

-1)-

'0'<=26)

//若上述兩種情況都不滿足,直接返回答案0if(

dp[i]

==0)}

returndp[

n];}}

更多題解參考:九章演算法

九章演算法 Google面試題 內積

描述 給定長度為n的a陣列,長度為k的b陣列 你可以從a陣列裡取k個數 規則如下 即每次可以從a陣列的最左邊或者最右邊取走乙個數,取走的數從陣列中移除 將取出的ai按取出的順序組成c陣列 求b與c的內積最大值 b與c內積為 i 0k 1bi ci 解釋1 a 1,4,3,2,5 b 1,2,3,4 ...

九章演算法 Google面試題 字串解碼

給出乙個表示式 s 此表示式包括數字,字母以及方括號。在方括號前的數字表示方括號內容的重複次數 括號內的內容可以是字串或另乙個表示式 請將這個表示式展開成乙個字串。樣例1 輸入 s abc3 a 輸出 abcaaa 樣例2 輸入 s 3 2 ad 3 pf xyz 輸出 adadpfpfpfadad...

九章演算法 Google面試題 島嶼的個數II

給定 n,m,分別代表乙個二維矩陣的行數和列數,並給定乙個大小為 k 的二元陣列a.初始二維矩陣全0.二元陣列a內的k個元素代表k次操作,設第i個元素為 a i x,a i y 表示把二維矩陣中下標為a i x行a i y列的元素由海洋變為島嶼.問在每次操作之後,二維矩陣中島嶼的數量.你需要返回乙個...