中级农民
- 积分
- 107
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2020-7-24
- 最后登录
- 1970-1-1
|
DFS + MEMO这个很快的,供参考
public int numDecodings(String s) {
if (s == null || s.length() == 0) return 0;
int[] memo = new int[s.length()];
Arrays.fill(memo, -1);
return dfs(s, 0, memo);
}
public int dfs(String s, int start, int[] memo) {
if (start == s.length()) return 1;
if (memo[start] != -1) return memo[start];
int res = 0;
for (int i = start; i < s.length() && i - start <= 2; i++) {
int d = Integer.parseInt(s.substring(start, i + 1));
if (s.charAt(start) != '0' && d <= 26) {
res += dfs(s, i + 1, memo);
}
}
memo[start] = res;
return res;
} |
|