一道启蒙我 认识动态规划方法,利用少数几个参数存储前序信息达到节约空间的一道题。。也是FB面试中出现频率非常高,很有代表性的一道题:
public class Solution {
public int numDecodings(String s) {
if(s==null || s.equals("") || s.charAt(0)=='0') return 0; // !!!!!! LOW-level mistake, charAt(i) returns character, which should be represented in '' not in ""; I make this mistake in the whole program
int num1=1;
int num2=1;
int num3=0;
for(int i=1; i<s.length(); i++){
if(s.charAt(i)=='0'){
if(s.charAt(i-1)=='1' || s.charAt(i-1)=='2'){
num3=num1;
}
else return 0;
}
else{
if((s.charAt(i-1)=='2' && s.charAt(i)<'7') || s.charAt(i-1)=='1'){
num3=num2+num1;
}
else num3=num2;
}
num1=num2;
num2=num3;
}
return num2;
}
}