首页 > 其他分享 >剑指 Offer 46. 把数字翻译成字符串

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

时间:2023-09-07 17:22:53浏览次数:38  
标签:Offer 46 int 翻译成 字符串 dp

题目链接: 剑指 Offer 46. 把数字翻译成字符串

题目描述:

解法思路:

代码:

// dp[i] =  dp[i-1] + dp[i-2]
// dp[i] 表示长度为i的数字,翻译成字符串有多少种
func translateNum(num int) int {
    s := strconv.Itoa(num)
    n := len(s)
    dp := make([]int,n+1)
    dp[0] = 1  //初始时只有一种
    dp[1] = 1  // 长度为 1 也是一种
    for i := 2; i <= n;i++{
        dp[i] = dp[i-1]  //单个数字翻译
        
        t := (s[i-2]-'0') * 10 + (s[i-1] - '0')
        if t >=10 && t <= 25 {  // 如果两个数字翻译,也可以,那就加上这种情况
            dp[i] += dp[i-2]
        }
    }
    return dp[n]
}

标签:Offer,46,int,翻译成,字符串,dp
From: https://www.cnblogs.com/lxing-go/p/17685552.html

相关文章

  • 剑指Offer
    题目链接:题目描述:解法思路:代码:funcfindNthDigit(nint)int{//1、确定是几位数(-10-90-900-9000等)//2、确定是几位数的第几位数(求第n位数是属于哪一个数的)//3、确定是属于那个数的第几位digit,digitNum,count:=1,1,9//digit表示是几位数;dig......
  • 剑指Offer 43. 1~n 整数中 1 出现的次数
    题目链接:剑指Offer43.1~n整数中1出现的次数题目描述:解法思路:代码:funccountDigitOne(nint)int{ //思路 ifn==0{ return0 } //求出该数的各个位上的数字,保存到nums中 varnums[]int tmp:=n fortmp!=0{ a:=tmp%10 nums=append(nums,a)......
  • 剑指 Offer 57 - II. 和为s的连续正数序列
    输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例1:输入:target=9输出:[[2,3,4],[4,5]]示例2:输入:target=15输出:[[1,2,3,4,5],[4,5,6],[7,8]]classSolution{publici......
  • 剑指 Offer 33. 二叉搜索树的后序遍历序列
    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:5/\26/\13示例1:输入:[1,6,3,2,5]输出:false示例2:输入:[1,3,2,6,5]输出:truec......
  • 剑指 Offer 42. 连续子数组的最大和
    输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 示例1:输入:nums=[-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1]的和最大,为6。classSolution{publicintmaxSubArray(int[]nums){......
  • 剑指 Offer 43. 1~n 整数中 1 出现的次数(困难)
    题目:classSolution{public:intcountDigitOne(intn){//mulk表示10^k//在下面的代码中,可以发现k并没有被直接使用到(都是使用10^k)//但为了让代码看起来更加直观,这里保留了klonglongmulk=1;intans=0;......
  • 剑指 Offer 41. 数据流中的中位数
    如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如,[2,3,4]的中位数是3[2,3]的中位数是(2+3)/2=2.5设计一个支持以下两......
  • 剑指 Offer 20. 表示数值的字符串
    说实话本题虽然不难,但是对边界问题的处理超乎想象(一不小心就越界访问),”简单“的难度还是说明博主本身太菜了。本题的主要考点是双指针以及对标准库(对c++来说)一些函数的运用。处理的中心思想是:先将整个字符串反转,而后再通过双指针提取其中的各个单词,而后再将其反转。这样的处理......
  • 剑指 Offer 65. 不用加减乘除做加法(简单)
    题目:classSolution{public:intadd(inta,intb){while(b){//总体思路:上一次产生的进位数*进制数+本位数,进制数为0的时候直接返回本位数即可intcarry=a&b;//计算进位a=a^b;//计算本位b......
  • 剑指 Offer 15. 二进制中1的个数(简单)
    题目:classSolution{public:inthammingWeight(uint32_tn){intresult=0;for(inti=0;i<32;i++){if(n&(1<<i))result++;//利用按位与}returnresult;}};......