'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...