2022-7-6 字符串-动态规划/递归
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
class Solution { public int translateNum(int num) { String s=String.valueOf(num); return f(0,s); } public int f(int index,String s){ if (index>=s.length()) return 0; if (index==s.length()-1) return 1; if (index==s.length()-2){ int num=Integer.parseInt(s.substring(index)); if (num>=10&&num<=25) return 2; else return 1; } int num=Integer.parseInt(s.substring(index,index+2)); int ans=0; if (num>=10&&num<=25) ans+=f(index+2,s); return ans+f(index+1,s); } }
思路:对于index开始的字符串,要么只能选第一个字母计算, 要么取前两个字符计算。