把数字翻译成字符串

题目

  给定一个数字,按照如下规则翻译成字符串:0翻译成“a”,1翻译成“b”...25翻译成“z”。一个数字有多种翻译可能,例如12258一共有5种,分别是bccfi,bwfi,bczi,mcfi,mzi。实现一个函数,用来计算一个数字有多少种不同的翻译方法。

复制代码
class Solution {
public:
    int translateNum(int num) {
        if  (num < 0) {
            return 0;
        }
    
        string num_of_str = to_string(num);
        int len = num_of_str.length();

        //表示num[0...i] 以i结尾的能够翻译的字符种类数
        vector<int> dp(len, 0);
        dp[0] = 1;//1个字符肯定能够翻译
        for (int i = 1; i < len; ++i) {
            dp[i] = dp[i - 1];//当前位置字符直接翻译 
            int num1 = num_of_str[i - 1] - '0';
            int num2 = num_of_str[i] - '0';
            if (num1 * 10 + num2 >= 10 && num1 * 10 + num2 <= 25) {
                if (i - 2 < 0) {
                    dp[i] += 1;
                }
                else {
                    dp[i] += dp[i - 2];
                }
            }
        }
        return dp[len - 1];
    }
};
复制代码

 

posted on   tianzeng  阅读(972)  评论(0编辑  收藏  举报

编辑推荐:
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 分享4款.NET开源、免费、实用的商城系统

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示