zoukankan      html  css  js  c++  java
  • 解码问题--leetcode:91 (2019商汤笔试)

    题目:有一种将字母编码成数字的方式:'a'->1, 'b->2', ... , 'z->26'。

    现在给一串数字,给出有多少种可能的译码结果。

    想法:

    该题就是动态规划问题,建议在写这题之前明白“背包问题”会好理解很多。


    参考代码:

     1 #include<iostream>
     2 using namespace std;
     3   
     4 int numDecodings(string s)
     5 {
     6         if(!s.size() || s.front() == '0') return 0;
     7         int r1 = 1, r2 = 1;
     8         for (int i = 1; i < s.size(); i++)
     9         {
    10             if (s[i] == '0') // 当当前i位为‘0’时,只有与前一位结合在一起算一个字母,即:10,20; 所以,此时r1(最大可能)不增加。
    11                 r1 = 0; // 这里赋值0,是为了下一个if中r1 = r2 + r1; 将r1赋值为r2.
    12             if ((s[i-1] == '1') || (s[i-1] == '2' && s[i] <= '6'))
    13             {
    14                 r1 = r2+r1; // r1记录的是:第i位算一个字母的情况 + 第i-1位与i位合为一个字母的情况 (也就是最大的可能)
    15                 r2 = r1-r2; // r2记录的是:第i-1位之前的所有可能(不包含i-1位)
    16             }
    17             else
    18                 r2 = r1;
    19         }
    20         return r1;
    21 }
    22 int main()
    23 {
    24     string s;
    25     while(cin >> s)
    26     {
    27         cout << numDecodings(s) << endl;
    28     }
    29     return 0;
    30 }
  • 相关阅读:
    Python的传递引用
    kafka的ACK
    分布式事务
    Java中的锁
    docker笔记
    MySQL数据库优化
    Centos7使用yum命令安装Mysql5.6.X
    ubuntu16.04安装workbench
    ubuntu下IDEA配置tomcat报错Warning the selected directory is not a valid tomcat home
    ubuntu配置JDK
  • 原文地址:https://www.cnblogs.com/WPF-342201/p/11385918.html
Copyright © 2011-2022 走看看