https://leetcode.com/problems/decode-ways/
明显dp问题,开数组长度n+1,dp[n]=1,dp[n - 1]看是不是0来判断。剩下的部分就是巧用parseInt、substring,可有效减少代码量。难度不大。
public class Solution {
public int numDecodings(String s) {
if (s == null || s.length() == 0) return 0;
int len = s.length();
char[] arr = s.toCharArray();
int[] dp = new int[len + 1];
dp[len] = 1;
dp[len - 1] = arr[len - 1] == '0' ? 0 : 1;
for (int i = len - 2; i >= 0; i--) {
if (arr[i] == '0') continue;
if (Integer.parseInt(s.substring(i, i + 2)) > 26) dp[i] = dp[i + 1];
else dp[i] = dp[i + 1] + dp[i + 2];
}
return dp[0];
}
}