91 Decode Ways 翻譯數字

2021-10-01 05:18:40 字數 1541 閱讀 7672

'a' -> 1

'b' -> 2

...'z' -> 26

given anon-emptystring containing only digits, determine the total number of ways to decode it.

example 1:

input: "12"

output: 2

explanation: it could be decoded as "ab" (1 2) or "l" (12).

example 2:

input: "226"

output: 3

explanation: it could be decoded as "bz" (2 26), "vf" (22 6), or "bbf" (2 2 6).

題意:給出一串由數字組成的字串,根據'a'對應1(不是01),『z』對應26的方法,求一串字串可被翻譯成多少種。

思路:從字串尾到頭遍歷每個數字字元,取當前位與後一位數字組合,再進行判斷:

1) 如果當前位為0,例如00...09,則當前數字不能被翻譯;

2)如果當前位和後一位組合的數為10...26,則有兩種翻譯方法,26或2、6;

3)如果當前位和後一位組合的數大於26,例如27...99,則只能有一種翻譯方法。

第n數字若不能被翻譯,則記錄當前數字能被翻譯的方法為0 (way[n]=0) 

第n數字能被翻譯一種,則記錄當前數字能被翻譯的方法不變,和後一位數字的方法相等 (way[n] =  way[n+1] )

第n數字能被翻譯兩種,則記錄當前數字能被翻譯的方法為後一位數字的方法(把當前數字視為乙個字元)加上後兩位數字的方法(把兩位數字視為乙個字元)   way[n] =  way[n+1]  + way[n+2] ;

**:利用動態規劃

class solution 

else if(number <=26)

else

}return ways[0];

}}

**:利用遞迴,結果超時

class solution 

public int getrestnum(string s)

char lastchar = s.charat(strlen - 1);

char secondlastchar = s.charat(strlen - 2);

if(secondlastchar == '0' || lastchar == '0') //00 01 09

return num;

}if(secondlastchar < '2' || (secondlastchar == '2' && lastchar <= '6')) // <26

else

return num;

}}

9 1 建構函式

1 建構函式 用來給資料成員賦值,但是是可以在建立物件的時候自動呼叫 棧區 物件和堆區物件 分別自動呼叫建構函式 include using namespace std class cstu age 12 f 12.12f void fun 自定義函式進行初始化 int main 2 建構函式的型別...

91 解碼方法

方法一 動態規劃法 該問題可以通過動態規劃的方法進行求解,我們假設s i 代表一條長度為i的訊息,對應的解碼方法的總數為dp i 那麼這個值的大小和dp i 1 以及dp i 2 相關,因為解碼時只有一位或者兩位字元可以作為乙個原碼看待。當我們假設這條訊息的最後一位作為原碼時,它的取值範圍為 1 9...

91 解碼方法

一條包含字母a z的訊息通過以下方式進行了編碼 a 1 b 2 z 26給定乙個只包含數字的非空字串,請計算解碼方法的總數。示例 1 輸入 12 輸出 2 解釋 它可以解碼為 ab 1 2 或者 l 12 示例 2 輸入 226 輸出 3 解釋 它可以解碼為 bz 2 26 vf 22 6 或者 b...