[剑指Offer]46-把数字翻译成字符串(递归思想,循环实现)
题意
'0'到'25'翻译成'a'到'z',故一个字符串可以有多种翻译方式,如12258有五种翻译方式。
给定字符串,输出有多少种翻译方式
解题思路
递归思想
- 计f(i)为以第i个字符开始到原字符串结尾的串可翻译的方式数。
- 则f(i)=f(i+1)+g(i,i+1)*f(i+2);其中g函数为判定i,i+1位置对应的两个字符连在一起是否在0-25范围内的函数,是则返回1,否则返回0。
用循环实现,由小及大,故从后向前遍历。
时间负责度O(n).
代码
#include <iostream>
#include <string>
using namespace std;
int inScope(char num1,char num2){
int number=(num1-'0')*10+(num2-'0');
if(number>=0&&number<=25){
return 1;
}
else{
return 0;
}
}
int transMeansCnt(string str){
if(str.empty()){
return 0;
}
int meansCnt[str.length()];
int endIdx=(int)str.length()-1;
for(int i=endIdx;i>=0;--i){
if(i==endIdx){
meansCnt[i]=1;
}
else if(i==endIdx-1){
meansCnt[i]=meansCnt[i+1]+inScope(str[i],str[i+1]);
}
else{
meansCnt[i]=meansCnt[i+1]+inScope(str[i],str[i+1])*meansCnt[i+2];
}
}
return meansCnt[0];
}
int main(int argc, const char * argv[]) {
string s="12258";
int meansCnt=transMeansCnt(s);
cout<<meansCnt<<endl;
return 0;
}
[剑指Offer]46-把数字翻译成字符串(递归思想,循环实现)的更多相关文章
- 剑指 Offer 46. 把数字翻译成字符串 + 动态规划
剑指 Offer 46. 把数字翻译成字符串 Offer_46 题目描述 题解分析 本题的解题思路是使用动态规划,首先得出递推公式如下 dp[i] = dp[i-1]+dp[i-2](如果s[i-1] ...
- 力扣 - 剑指 Offer 46. 把数字翻译成字符串
题目 剑指 Offer 46. 把数字翻译成字符串 思路1(递归,自顶向下) 这题和青蛙跳台阶很类似,青蛙跳台阶说的是青蛙每次可以跳一层或者两层,跳到第 n 层有多少种解法,而这题说的是讲数字翻译成字 ...
- 【Java】 剑指offer(46) 把数字翻译成字符串
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成" ...
- 每日一题 - 剑指 Offer 46. 把数字翻译成字符串
题目信息 时间: 2019-07-02 题目链接:Leetcode tag: 动态规划 难易程度:中等 题目描述: 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ...
- 剑指 Offer 46. 把数字翻译成字符串
题目描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,25 ...
- 剑指offer——48把数字翻译成字符串
题目要求: 给定一个数字,按照如下规则翻译成字符串:0翻译成“a”,1翻译成“b”...25翻译成“z”.一个数字有多种翻译可能,例如12258一共有5种,分别是bccfi,bwfi,bczi,mcf ...
- 剑指offer-面试题46-把数字翻译成字符串-动态规划
/* 题目: 给定一个数字,将0~25依次翻译为a~z,计算有多少种翻译方法. */ /* 思路: 动态规划法 */ #include<iostream> #include<cstr ...
- 《剑指offer》面试题46. 把数字翻译成字符串
问题描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,25 ...
- 《剑指offer》第四十六题(把数字翻译成字符串)
// 面试题46:把数字翻译成字符串 // 题目:给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成"a",1翻 // 译成"b",……,11翻译成&qu ...
随机推荐
- Installing PHP5 on Ubuntu Server
When installing PHP 5 from source I ran into the following problems and solutions: Problem:configure ...
- putty登录显示IP
登陆服务器 cd vi .bashrc 在尾部加入如下代码 if [ "$SSH_CONNECTION" != '' -a "$TERM" != 'linux' ...
- JSdom操作内容,样式,属性
<p> JavaScript 能够直接写入 HTML 输出流中: </p> <script> document.write("<h1>This ...
- git 配置提交过滤文件
1)在Git项目中定义.gitignore文件 2)在Git项目的设置中指定排除文件 3)定义Git全局的 .gitignore 文件
- vue:在路由跳转中使用拦截器
1:首先在路由对象中的某一个具体的路由对象加这样一个属性 meta: { requireAuth:true } 2:然后在main.js中添加这段代码 router.beforeEach((to, ...
- Linux主机如何用ssh去登录docker容器的步骤
进入终端,sudo -i,切换root,输入docker -d 打开另一个终端,切换root,输入docker search ubuntu,大概如下结果: NAME ...
- C++复习:异常
异常处理机制专题 前言 1)异常是一种程序控制机制,与函数机制独立和互补 函数是一种以栈结构展开的上下函数衔接的程序控制系统,异常是另一种控制结构,它依附于栈结构,却可以同时设置多个异常类型作 ...
- python笔记之强制函数以关键字参数传参
最近学习python,学到了函数传参,看到了以下这个特殊情况,特此来做个笔记 def add(*, x, y): print(x, y) 以上函数定义后,该怎么传参?前面的那个*号是做什么用的? 我们 ...
- 使用py2exe转换python文件为可执行程序
py2exe可以将python脚本转换成在Windows上的可独立执行.exe程序的工具.可以让Python脚本在没有安装python工具的Windows系统上运行,方便脚本共享. 操作环境 pyth ...
- vue启动时报错,node-modules下xxx缺失
从qq上拷贝了一个项目,解压后打开进vscode,安装依赖与scss后启动,显示node-modules下xxx指向缺失(想不起来是哪个缺失了),在网上找了很多解决办法,包括重新安装node 与 np ...