1.题目
2.解法1(递归法)
class Solution {
public int numDecodings(String s){
char[] chars = s.toCharArray();
if(chars[0] == '0'){
return 0;
}
int count = decode(chars, chars.length-1);
return count;
}
public int decode(char[] chars, int index){
if(index <= 0){
return 1;
}
int count = 0;
char cur = chars[index];
char pre = chars[index-1];
if(cur > '0'){
count = decode(chars, index-1);
}
if(pre == '1' || (pre == '2' && cur <= '6')){
count += decode(chars, index-2);
}
return count;
}
}
思路是:
有两种情况:一种是个位数,另外一种是十位数,两种情况加一起进行递归。
有几种情况需要注意:
1.如果以0开头,无法解码
2.如果以1开头,第2位会有0-9种情况,如果以2开头,第2位会有0-6种情况。