题意:把A-Z字母按照1-26的顺序对应起来,然后给出一个数字字符串,计算出对应的字母顺序有多少种。如‘12’,对应有AB、L两种。
思路:动规,设置prev,cur两个变量记录。
代码:
package com.decodeWays;
public class decodeWays {
public int calDecodeWays(String s){
int prev = 0 ;
int cur = 1;
for (int i = 1; i <= s.length(); i++) {
if(s.charAt(i-1) == '0') cur = 0;
if(i < 2 || !(s.charAt(i-2) == '1' ||
(s.charAt(i-2) == '2' && s.charAt(i-2)<= '6')))
prev = 0;
int temp = cur;
cur = cur + prev;
prev = temp;
}
return cur;
}
public static void main(String[] args) {
String string = "1234111";
System.out.println(new decodeWays().calDecodeWays(string));
}
}