JZ-071-把数字翻译成字符串
把数字翻译成字符串
题目描述
给定一个数字,按照如下规则翻译成字符串:1 翻译成“a”,2 翻译成“b”... 26 翻译成“z”。一个数字有多种翻译可能,例如 12258 一共有 5 种,分别是 abbeh,lbeh,aveh,abyh,lyh。实现一个函数,用来计算一个数字有多少种不同的翻译方法。
题目链接: 把数字翻译成字符串
代码
/**
* 标题:把数字翻译成字符串
* 题目描述
* 给定一个数字,按照如下规则翻译成字符串:1 翻译成“a”,2 翻译成“b”... 26 翻译成“z”。一个数字有多种翻译可能,例如 12258 一共有 5 种,
* 分别是 abbeh,lbeh,aveh,abyh,lyh。实现一个函数,用来计算一个数字有多少种不同的翻译方法。
*/
public class Jz71 {
/**
* 动态规划
*
* @param s
* @return
*/
public int numDecodings(String s) {
if (s == null || s.length() == 0) {
return 0;
}
int n = s.length();
int[] dp = new int[n + 1];
dp[0] = 1;
dp[1] = s.charAt(0) == '0' ? 0 : 1;
for (int i = 2; i <= n; i++) {
int one = Integer.valueOf(s.substring(i - 1, i));
if (one != 0) {
dp[i] += dp[i - 1];
}
if (s.charAt(i - 2) == '0') {
continue;
}
int two = Integer.valueOf(s.substring(i - 2, i));
if (two <= 26) {
dp[i] += dp[i - 2];
}
}
return dp[n];
}
public static void main(String[] args) {
Jz71 jz71 = new Jz71();
System.out.println(jz71.numDecodings("12258"));
}
}
【每日寄语】 子不学,非所宜;幼不学,老何为。
JZ-071-把数字翻译成字符串的更多相关文章
- 《剑指offer》第四十六题(把数字翻译成字符串)
// 面试题46:把数字翻译成字符串 // 题目:给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成"a",1翻 // 译成"b",……,11翻译成&qu ...
- 剑指 Offer 46. 把数字翻译成字符串 + 动态规划
剑指 Offer 46. 把数字翻译成字符串 Offer_46 题目描述 题解分析 本题的解题思路是使用动态规划,首先得出递推公式如下 dp[i] = dp[i-1]+dp[i-2](如果s[i-1] ...
- 力扣 - 剑指 Offer 46. 把数字翻译成字符串
题目 剑指 Offer 46. 把数字翻译成字符串 思路1(递归,自顶向下) 这题和青蛙跳台阶很类似,青蛙跳台阶说的是青蛙每次可以跳一层或者两层,跳到第 n 层有多少种解法,而这题说的是讲数字翻译成字 ...
- 把数字翻译成字符串 --剑指offer 46题
# 给一个字符串,按如下规则把它翻译成字符串:1翻译成a,2翻译成b,...25翻译成z:一个数可以有多种翻译方式,比如122可以翻译成abb和kb还可以翻译成aw即3种翻译方式.计算一个数字有几种翻 ...
- 剑指offer——48把数字翻译成字符串
题目要求: 给定一个数字,按照如下规则翻译成字符串:0翻译成“a”,1翻译成“b”...25翻译成“z”.一个数字有多种翻译可能,例如12258一共有5种,分别是bccfi,bwfi,bczi,mcf ...
- 【Java】 剑指offer(46) 把数字翻译成字符串
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成" ...
- 【Offer】[46] 【把数字翻译成字符串】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 给定一个数字,我们按照如下规则把它翻译为字符串: 0翻译成"a",1翻译成"b",..... 1 ...
- 每日一题 - 剑指 Offer 46. 把数字翻译成字符串
题目信息 时间: 2019-07-02 题目链接:Leetcode tag: 动态规划 难易程度:中等 题目描述: 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ...
- 剑指 Offer 46. 把数字翻译成字符串
题目描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,25 ...
随机推荐
- 实用的linux 命令
1. 查看当前文件夹下文件或文件夹所占磁盘的大小 du -sh *|sort -rh 2. 查找某个进程号,脚本或程序所在目录的方法 ll /proc/进程id 3. awk 的用法 (1)累加: a ...
- PyTorch 介绍 | BUILD THE NEURAL NETWORK
神经网络由对数据进行操作的layers/modules组成.torch.nn 命名空间提供了所有你需要的构建块,用于构建你自己的神经网络.PyTorch的每一个module都继承自nn.Module. ...
- HOOK API(四) —— 进程防终止
0x00 前言 这算是一个实战吧,做的一个应用需要实现进程的防终止保护,查了相关资料后决定用HOOK API的方式实现.起初学习HOOK API的起因是因为要实现对剪切板的监控,后来面对 ...
- NSMutableString基本概念
1.NSMutableString 基本概念 NSMutableString 类 继承NSString类,那么NSString 供的方法在NSMutableString中基本都可以使用,NSMutab ...
- Redis分布式锁实现原理
关于Redis分布式锁网上有很多优秀的博文,这篇文章仅作为我这段时间遇到的新问题的记录. 1.什么是分布式锁: 在单机部署的情况下,为了保证数据的一致性,不出现脏数据等,就需要使用synchroniz ...
- sql注入,xss攻击,csrf(模拟请求),防盗链
如何防止别人模拟请求? 使用令牌token解决模拟请求 好处是 唯一性只能有一次请求 已经拿到生成的token 如何防止呢? 怎样防止非人工? 使用验证码 xss攻击? xss攻击也叫脚本注入 ...
- Serializable接口中serialVersionUID字段的作用
序列化运行时使用一个称为 serialVersionUID 的版本号与每个可序列化类相关联,该序列号在反序列化过程中用于验证序列化对象的发送者和接收者是否为该对象加载了与序列化兼容的类. 如果接收者加 ...
- Eclipse项目上的红叉解决方案
Eclipse项目上存在红叉,但是又不影响运行,同时展开项目未指明任何内容出错,可以按如下步骤进行处理: 0.查看Problems视图,定位错误,发现处理之: 1.检查Build Path中的各个依赖 ...
- 简单的MAC的终端命令
今天小研究了一下MAC的终端命令,主要为了方便调试程序用,XCODE用不来啊... 在这里记下..防止丢失 pwd 当前工作目录 cd(不加参数) 进root cd(folder) 进入文件夹 cd ...
- IOS scrollView 图片浏览
// // ViewController.m // 0426 // // Created by apple on 15/4/26. // Copyright (c) 2015年 gense. All ...