剑指 Offer 46. 把数字翻译成字符串(中等)Java
题目描述
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
示例:
思路:
用动态规划的方法,如果后两个数字的和大于10,小于26,则为m+n,否则,和i-1的翻译方法种类数相同
代码:
class Solution { public int translateNum(int num) { if(num<10){ return 1; } String str = String.valueOf(num); int a = 0; int b = 0; for(int i = 0;i<str.length();i++){ if(i==0){ a = 1; b = 1; }else{ if(str.charAt(i-1)==2&&str.charAt(i)<=5||str.charAt(i-1)==1){ int c = b; b += a; a = c; }else { a = b; } } } return b; } }
结果:
上一篇:
92天倒计时,蓝桥杯省赛备赛攻略来啦~
下一篇:
动态规划——DP 核心:递推式