091 Decode Ways 解码方法
包含 A-Z 的字母的消息通过以下规则编码:
'A' -> 1
'B' -> 2
...
'Z' -> 26
给定一个包含数字的编码消息,请确定解码方法的总数。
例如,
给定消息为 "12", 它可以解码为 "AB"(1 2)或 "L"(12)。
"12" 的解码方法为 2 种。
详见:https://leetcode.com/problems/decode-ways/description/
Java实现:
class Solution { public int numDecodings(String s) { if (s.length()==0||s.isEmpty()||s.equals("0")){ return 0; } int[] dp = new int[s.length()+1]; dp[0] = 1; if (isValid(s.substring(0,1))){ dp[1]=1; }else{ dp[1]=0; } for(int i=2; i<=s.length();i++){ if (isValid(s.substring(i-1,i))){ dp[i]+=dp[i-1]; } if (isValid(s.substring(i-2,i))){ dp[i]+=dp[i-2]; } } return dp[s.length()]; } public boolean isValid(String s){ if (s.charAt(0)=='0') { return false; } int code = Integer.parseInt(s); return code>=1 && code<=26; } }
详见:https://www.cnblogs.com/springfor/p/3896162.html