数字字符转化为字母组合的种数
来源
数字字符转化为字母组合的种数_牛客网
《程序员代码面试指南》:数字字符串转换为字母组合的种数
注意的问题
1.dp[i]的定义为str[0…i-1]已经转化完毕,剩下的字符转换成字母组合的结果种数。
2.判断str[i]是否是给定字符时,别忘了加’’,如’0’。
3.注意结果值的溢出问题。
代码实现
import java.util.Scanner;
public class Main{
public static void main(String []args){
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
char[] chas = s.toCharArray();
//dp[i]表示s[0...i-1]都已经转换完毕,转换剩下的字符的方案总数
//dp[n] = 1
//dp[0]就是答案
long []dp = new long[s.length() + 1];
dp[s.length()] = 1;
dp[s.length()-1] = chas[s.length()-1]!='0' ? 1:0;
for(int i = s.length()-2 ; i>= 0 ; i--){
if(chas[i] != '0'){//'1'~'9'
dp[i] = dp[i+1] %(1000000000+7);
}
if((chas[i] == '1') || (chas[i] == '2' && chas[i+1]<='6')){
//注意不能写成dp[i] += dp[i+2]%(1000000000+7);
dp[i] = (dp[i]+dp[i+2])%(1000000000+7);
}
}
System.out.println(dp[0]);
}
}`在这里插入代码片`