当前位置: 首页 > news >正文

把数字翻译成字符串 -- java

题目描述

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

解题思路

动态规划

假设数组dp[i]表示从头到字符串的第i位(不是字符串的下标),一共有多少种解码方法的话

首先我们一定能从第i-1位的解码方法上继续解码。那么就是dp[i] += dp[i-1];

除此之外如果字符串的第i-1位和第i位能组成一个10到25的数字,说明我们可以是在第i-2位的解码方法上继续解码。那么就是dp[i] += dp[i-2];

代码

public class getTranslationCount {
    public static int getTranslationCount(int number) {
        String s = String.valueOf(number);

        // 存储动态规划中间值
        int[] dp = new int[s.length()+1];

        // 为了dp[2] += dp[0] 而设置
        dp[0] = 1;
        dp[1] = 1;

        for (int i = 2; i <= s.length(); i++) {
            // 1. 肯定会发生
            dp[i] += dp[i-1];
            // 2. 当前位与前一位可以组成一个数字时
            int converted = Integer.parseInt(s.substring(i-2,i));
            if (converted >=0 && converted <=25) {
                dp[i] += dp[i-2];
            }
        }
        return dp[s.length()];
    }

    public static void main(String[] args) {
        System.out.println(getTranslationCount(12258));
    }
}


来自:
《剑指Offer》
Coding-Interviews/把数字翻译成字符串.md at master · todorex/Coding-Interviews

相关文章:

  • jquery highlight高亮插件下载
  • 笔记本电脑彻底删除硬盘数据
  • win10安装跳过创建Microsoft账户
  • 解决 Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot b
  • springboot vue配置跨域访问
  • 解决 [WARNING]: Console output during zsh initialization detected.
  • 解决 vue ui 白屏
  • everything的安装后初始设置
  • Windows 安装vue配置
  • Could NOT find resource [logback-test.xml]
  • setSerializationInclusion(JsonInclude.Include.NON_NULL) 没有作用
  • mac查看电脑安装了多少个jdk
  • vue-cli-service: command not found
  • 1067 - Invalid default value for 的原因之一
  • The database returned no natively generated identity value
  • 《剑指offer》分解让复杂问题更简单
  • 【comparator, comparable】小总结
  • js学习笔记
  • leetcode386. Lexicographical Numbers
  • ng6--错误信息小结(持续更新)
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • SpringCloud集成分布式事务LCN (一)
  • 读懂package.json -- 依赖管理
  • 异常机制详解
  • 优秀架构师必须掌握的架构思维
  • Mac 上flink的安装与启动
  • PostgreSQL之连接数修改
  • 仓管云——企业云erp功能有哪些?
  • ​iOS实时查看App运行日志
  • #define,static,const,三种常量的区别
  • #mysql 8.0 踩坑日记
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (十) 初识 Docker file
  • (顺序)容器的好伴侣 --- 容器适配器
  • (一)80c52学习之旅-起始篇
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)Oracle存储过程编写经验和优化措施
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • **PHP分步表单提交思路(分页表单提交)
  • .net 后台导出excel ,word
  • .NetCore部署微服务(二)
  • .net打印*三角形
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [8-27]正则表达式、扩展表达式以及相关实战
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作
  • [Angular] 笔记 16:模板驱动表单 - 选择框与选项
  • [BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析
  • [C#小技巧]如何捕捉上升沿和下降沿