zoukankan      html  css  js  c++  java
  • 把数字翻译成字符串

    把数字翻译成字符串

    题目描述:给定一个数字,我们按照如下规则把它翻译为字符串:

    0 翻译成 a,1 翻译成 b,……,11 翻译成 l,……,25 翻译成 z

    一个数字可能有多个翻译。

    例如 12258 有 5 种不同的翻译,它们分别是 bccfibwfibczimcfimzi

    请编程实现一个函数用来计算一个数字有多少种不同的翻译方法。

    样例

    输入:"12258"

    输出:5

    分析:根据我们将要处理的那个字符(第i个字符,记为x)的处理方式分情况讨论,类似对最后一步操作做分情况讨论

    1、如果我们将x单独翻译 那么dp[i]=dp[i-1]

    2、如果我们将x和前一字符合并翻译处理 那么dp[i] = dp[i-2]

    因为题意要求的是翻译方案总数:所以

    dp[i] = dp[i-1] + dp[i-2]

    附:该题类似于爬楼梯问题、斐波那契......


    代码如下:

    class Solution {
    public:
       int getTranslationCount(string s) {
           int dp[s.size()];
           if(s.size() == 0 || s.size() == 1) return s.size();
           s = " " + s;
           dp[0] = 1;
           for(int i=1;i<s.size();i++){
               dp[i] = dp[i-1];
               if(i > 1){
                   int t = ( s[i] - '0' )  + ( s[i-1] - '0' ) * 10;
                   if(t >= 10 && t <= 25) dp[i] += dp[i-2];
              }
          }
           return dp[s.size()-1];
      }
    };

     

  • 相关阅读:
    Framework7-Vue搭建项目
    在vue中使用handsontable
    electron-vue中关闭烦人的es语法检查
    今天工作整整一个月了,来记录一下(web前端)
    在electron-vue项目中使用element-ui
    使用electron-vue搭建桌面应用程序项目
    Electron是个啥?
    2月11日-寒假进度11
    2月10日-寒假进度10
    2月9日-寒假进度09
  • 原文地址:https://www.cnblogs.com/yuanshixiao/p/15616597.html
Copyright © 2011-2022 走看看