2022-7-6 字符串-动态规划/递归

剑指 Offer 46. 把数字翻译成字符串

难度中等

给定一个数字,我们按照如下规则把它翻译为字符串: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开始的字符串,要么只能选第一个字母计算, 要么取前两个字符计算。

posted on 2022-07-06 14:16  阿ming  阅读(18)  评论(0编辑  收藏  举报

导航