解碼方法
91. 解碼方法
一條包含字母 A-Z
的訊息通過以下方式進行了編碼:
'A' -> 1 'B' -> 2 ... 'Z' -> 26
給定一個只包含數字的非空字串,請計算解碼方法的總數。
題目資料保證答案肯定是一個 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
示例 4:
輸入:s = "1" 輸出:1
示例 5:
輸入:s = "2" 輸出:1
提示:
1 <= s.length <= 100
s
只包含數字,並且可能包含前導零。
題解
package dp;
/**
* @author lkp
* @version 1.0
* @date 2020/12/7 17:03
*/
public class NumDecodings {
public static int numDecodings2(String s) {
if (s.charAt(0) == '0') {
return 0;
}
int pre = 1, curr = 1;//dp[-1] = dp[0] = 1
for (int i = 1; i < s.length(); i++) {
int tmp = curr;
if (s.charAt(i) == '0') {
if (s.charAt(i - 1) == '1' || s.charAt(i - 1) == '2') {
curr = pre;
} else {
return 0;
}
} else if (s.charAt(i - 1) == '1' || (s.charAt(i - 1) == '2' && s.charAt(i) >= '1' && s.charAt(i) <= '6')) {
curr = curr + pre;
}
pre = tmp;
}
return curr;
}
/**
* @param s
* @return
*/
public static int numDecodings(String s) {
if (s.charAt(0) == '0' ||
s.contains("00") ||
s.contains("30") ||
s.contains("40") ||
s.contains("50") ||
s.contains("60") ||
s.contains("70") ||
s.contains("80") ||
s.contains("90")
) {
return 0;
}
int[] dp = new int[s.length() + 1];
dp[0] = 1;
dp[1] = 1;
for (int i = 2; i <= s.length(); i++) {
if (s.charAt(i - 1) == '0') {
dp[i] = dp[i - 2];
} else if ((s.charAt(i - 2) == '1') || (s.charAt(i - 2) == '2' && s.charAt(i - 1) <= '6')) {
dp[i] = dp[i - 1] + dp[i - 2];
} else {
dp[i] = dp[i - 1];
}
}
return dp[s.length()];
}
public static void main(String[] args) {
int i = numDecodings("2101");
System.out.println(i);
}
}
相關文章
- LeetCode-091-解碼方法LeetCode
- LeetCode_91.解碼方法LeetCode
- 【ALGO】Leetcode 91.解碼方法GoLeetCode
- Redux原始碼createStore解讀常用方法Redux原始碼
- Python3內建模組之json編碼解碼方法講解PythonJSON
- javaweb中中文亂碼解決方法總結之response和request解決方法JavaWeb
- 程式碼混淆的原理和方法詳解
- Vue 原始碼解讀(6)—— 例項方法Vue原始碼
- Mysql忘記密碼解決方法凹MySql密碼
- java中亂碼問題解決方法Java
- mongodb密碼特殊字元的解決方法MongoDB密碼字元
- STM CubeMx不能生成程式碼的解決方法
- centos7 vim中文亂碼解決方法CentOS
- 詳解JSON和JSONP劫持檢測程式碼以及解決方法JSON
- PHPCMS 後臺密碼忘記的解決方法PHP密碼
- 忘記網站 Admin 密碼的解決方法網站密碼
- 忘記 EyouCMS 後臺密碼的解決方法密碼
- MetInfo 後臺忘記密碼的解決方法密碼
- 【IDL】IDL中亂碼問題的解決方法
- SQL隱碼攻擊問題以及解決方法SQL
- IDEA控制檯輸出中文亂碼解決方法Idea
- mysql使用source 命令亂碼問題解決方法MySql
- Docker容器的退出狀態碼及解決方法Docker
- Jmeter json格式 unicode亂碼現象解決方法JMeterJSONUnicode
- 記錄 Ubuntu18.04 中文亂碼,解決方法Ubuntu
- 忘記網站管理員密碼的解決方法網站密碼
- SecurecRT亂碼怎麼辦?詳細解決方法分享~Securecrt
- adobe安裝提示【錯誤程式碼1】解決方法
- page_fault_in_nonpaged_area藍屏程式碼解決方法
- JAVA各種OOM程式碼樣例及解決方法JavaOOM
- ORA-06550錯誤程式碼的解決方法QB
- Mysql中文亂碼問題的最佳解決方法MySql
- HTTP請求方法及響應狀態碼詳解HTTP
- git操作時中文顯示亂碼的解決方法Git
- 二進位制補碼及與原碼的互相轉換方法詳解
- matplotlib 圖示 中文亂碼, 與 wordcloud 詞雲圖 中文亂碼 解決方法Cloud
- 空格在程式碼中變成其他字元或者亂碼問題解決方法字元
- 電腦密碼忘記了怎麼解開 圖文詳解電腦密碼忘記了的解開方法密碼