美文网首页
剑指 Offer 第46题:把数字翻译成字符串

剑指 Offer 第46题:把数字翻译成字符串

作者: 放开那个BUG | 来源:发表于2022-08-05 15:06 被阅读0次

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);
        }
    }
}

相关文章

网友评论

      本文标题:剑指 Offer 第46题:把数字翻译成字符串

      本文链接:https://www.haomeiwen.com/subject/ltobbrtx.html