zoukankan      html  css  js  c++  java
  • 剑指 Offer 46. 把数字翻译成字符串

    给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。

    示例 1:

    输入: 12258
    输出: 5
    解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"

    提示:

    0 <= num < 2^31

    这道题可以用递归做也可以用动态规划做,我这里给出的是动态规划的思路。dp[i]代表以数字nums[i]结尾的数字的翻译方案数量。若nums[i]和nums[i - 1]组成的两位数字可以被翻译,则 dp[i] = dp[i - 1] + dp[i - 2];否则 dp[i] = dp[i - 1]

    时间O(n)

    空间O(n)

    Java实现

    a = dp[1], b = dp[0]

     1 class Solution {
     2     public int translateNum(int num) {
     3         String s = String.valueOf(num);
     4         int a = 1, b = 1;
     5         for(int i = 2; i <= s.length(); i++) {
     6             String tmp = s.substring(i - 2, i);
     7             int c = tmp.compareTo("10") >= 0 && tmp.compareTo("25") <= 0 ? a + b : a;
     8             b = a;
     9             a = c;
    10         }
    11         return a;
    12     }
    13 }

    LeetCode 题目总结

  • 相关阅读:
    java三大框架
    Servlet 工作原理解析
    Android四大基本组件介绍与生命周期
    wait 和 sleep
    Linux Mysql使用
    Android开发人员必备的10 个开发工具
    AIDL
    IPC Binder
    php 比较2字符串相似度 百分比
    php 数字 的简单加解密
  • 原文地址:https://www.cnblogs.com/cnoodle/p/13070123.html
Copyright © 2011-2022 走看看