1、前言
题目描述
2、思路
可以使用递归来做,使用2位或者1位来翻译字符串。
思路
3、代码
class Solution {
public int translateNum(int num) {
String str = String.valueOf(num);
return dfs(str, 0);
}
private int dfs(String str, int index){
// 已经遍历到了最后一个字符、或者遍历完了该字符串
if(index == str.length() - 1 || index == str.length()){
return 1;
}
// 考察当前位以及后续一位代表的数字含义
int curAndNextNum = Integer.parseInt(str.substring(index, index + 1) + str.substring(index + 1, index + 2));
// 如果当前位及下一位能够组成【含义有效】的两位数,则分别再去递归
if(curAndNextNum >= 10 && curAndNextNum <= 25){
return dfs(str, index + 1) + dfs(str, index + 2);
}else { // ① 如09->9 ② 58 当前位与下一位凑不成两位数,就向后看一位
return dfs(str, index + 1);
}
}
}







网友评论