给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
示例 1:
输入: 12258
输出: 5
解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"
public class Solution {
public int TranslateNum(int num) {
if(num>=10&&num<=25)//首先 假设num=12 也就是有1|2,12 两种情况所以返回2
{
return 2;
}
if(num<100)//假设num=99,就只有99这一种情况
{
return 1;
}
int n=num%100;//取余100一定会得到一个两位数或者一位数
if(n>=10&&n<=25)//如果满足这个条件也就是说现在的num至少有两种情况
{
return TranslateNum(num/10)+TranslateNum(num/100);//num/10的意思是n是分开的情况
} //num/100的意思是n是两位数组合好的情况
//现在的组合已经是完全不同的情况了,所以要
//按照两个全新的数继续判断,直到return出数
return TranslateNum(num/10);//如果不满足以上条件也就是说n是在num<100的区间只有一种可能
}
}
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
该博客讨论了一个编程问题,即如何计算一个数字通过特定规则(0->'a', 1->'b', ..., 25->'z')翻译成字母的不同方法数。示例中给出了输入12258有5种不同的翻译,并提供了一段Java代码实现。该问题涉及到递归和字符串转换的算法设计。
237

被折叠的 条评论
为什么被折叠?



