题意

'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-把数字翻译成字符串(递归思想,循环实现)的更多相关文章

  1. 剑指 Offer 46. 把数字翻译成字符串 + 动态规划

    剑指 Offer 46. 把数字翻译成字符串 Offer_46 题目描述 题解分析 本题的解题思路是使用动态规划,首先得出递推公式如下 dp[i] = dp[i-1]+dp[i-2](如果s[i-1] ...

  2. 力扣 - 剑指 Offer 46. 把数字翻译成字符串

    题目 剑指 Offer 46. 把数字翻译成字符串 思路1(递归,自顶向下) 这题和青蛙跳台阶很类似,青蛙跳台阶说的是青蛙每次可以跳一层或者两层,跳到第 n 层有多少种解法,而这题说的是讲数字翻译成字 ...

  3. 【Java】 剑指offer(46) 把数字翻译成字符串

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成" ...

  4. 每日一题 - 剑指 Offer 46. 把数字翻译成字符串

    题目信息 时间: 2019-07-02 题目链接:Leetcode tag: 动态规划 难易程度:中等 题目描述: 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ...

  5. 剑指 Offer 46. 把数字翻译成字符串

    题目描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,25 ...

  6. 剑指offer——48把数字翻译成字符串

    题目要求: 给定一个数字,按照如下规则翻译成字符串:0翻译成“a”,1翻译成“b”...25翻译成“z”.一个数字有多种翻译可能,例如12258一共有5种,分别是bccfi,bwfi,bczi,mcf ...

  7. 剑指offer-面试题46-把数字翻译成字符串-动态规划

    /* 题目: 给定一个数字,将0~25依次翻译为a~z,计算有多少种翻译方法. */ /* 思路: 动态规划法 */ #include<iostream> #include<cstr ...

  8. 《剑指offer》面试题46. 把数字翻译成字符串

    问题描述 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l",--,25 ...

  9. 《剑指offer》第四十六题(把数字翻译成字符串)

    // 面试题46:把数字翻译成字符串 // 题目:给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成"a",1翻 // 译成"b",……,11翻译成&qu ...

随机推荐

  1. tfs对接数据-File

    在使用tfs时,数据结构 /** * getFile */ @RequestMapping("/tfs/{fileName}") public ResponseEntity< ...

  2. java序列化问题

    今天无意中看到了     redistemplet封装的类中,出现了序列化的字眼 ,了解下序列化的知识 1.什么是序列化 我们把变量从内存中变成可存储或传输的过程称之为序列化,(java中一般是用来保 ...

  3. EMQ笔记

    飞行窗口(Inflight Window)保存当前正在发送未确认的Qos1/2消息.窗口值越大,吞吐越高:窗口值越小,消息顺序越严格. 当客户端离线或者飞行窗口(Inflight Window)满时, ...

  4. win7下iis的配置问题

    开始asp的学习时,首先得配置iis服务,中途遇到各种问题也谷歌了不少,但是答案都很凌乱,折腾了两天才彻底解决这个问题.下面是我坎坷的配置过程,希望对你有所帮助: 第一步:打开Internet信息服务 ...

  5. 修改 计算机名后,修改SQLserver 注册服务器对象的名称,及登陆名

    select @@ServerName --查看当前所有数据库服务器名称select * from Sys.SysServers --修改数据库服务器名称sp_dropserver 'old_serv ...

  6. SED命令用法整理

    sed '/Started/'q  匹配到Started字符串则退出sed命令 sed '/Started/{/in/q}'  同时匹配到Started和in两个字符时则退出sed命令 ------- ...

  7. linux 一个跟踪文件删除的小技巧

    最近有同事问我说他有个现场环境,经常会丢失业务文件,每天都出现,几百个里面丢失1到两个. 为了解决这个问题,我让他布置audit,具体可以man一下auditctl. 过了一天,他说audit.log ...

  8. React之使用Context跨组件树传递数据

    ---------------------------------  讲解一 原文:https://blog.csdn.net/xuxiaoping1989/article/details/78480 ...

  9. VMware安装RHEL5.5后修改分辨率设置

    1.进入桌面后,点击System -> Administration -> Display,选择Hardware,点击Monitor Type后面的Configure(默认是autocon ...

  10. 4.HTTP入门.md

    目录 什么是http协议 http协议:对浏览器客户端 和 服务器端 之间数据传输的格式规范 查看http协议的工具* 使用火狐的firebug插件(右键->firebug->网络) Ht ...