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

    思路

    方法一:暴力法

    使用深度优先搜索枚举出全部情况,试探每一种可能性。

     1 class Solution {
     2 public:
     3     int translateNum(int num) {
     4         string s = to_string(num);
     5         int res = 0;
     6         dfs(s, res);
     7         return res;
     8     }   
     9 
    10     void dfs(string s, int& res) {
    11         if (s.empty()) {
    12             res++;
    13             return;
    14         }
    15 
    16         for (int i = 1; i <= s.length(); ++i) {
    17             //当以0开头时,只有0这一种情况,不能再往后取子串,比如03是非法的,不能翻译
    18             if(s[0] == '0') {
    19                 dfs(s.substr(i), res);
    20                 return;
    21             }
    22             
    23             string sub = s.substr(0, i);
    24             int x = stoi(sub);
    25             if (x > 0 && x <= 25) {
    26                 dfs(s.substr(i), res);
    27             }
    28             else {
    29                 return;
    30             }
    31 
    32         }
    33     }
    34 };

    方法二:动态规划

     1 class Solution {
     2 public:
     3     int translateNum(int num) {
     4         string s = to_string(num);
     5         vector<int> f(s.length()+1);
     6 
     7         f[0] = 1;
     8         f[1] = 1;
     9 
    10         int len = s.length();
    11         for(int i = 2; i <= len; ++i) {
    12             string lastTwoStr = s.substr(i-2, 2);
    13             int lastTwoNum = stoi(lastTwoStr);
    14             if(lastTwoStr[0] != '0' && lastTwoNum > 0 && lastTwoNum <= 25) {
    15                 f[i] = f[i-1] + f[i-2];
    16             } else {
    17                 f[i] = f[i-1];
    18             }
    19         }
    20 
    21         return f[len];
    22     }   
    23 };

    参考

    面试题46. 把数字翻译成字符串(动态规划,清晰图解)

  • 相关阅读:
    关于MySQL数据库中null的那些事
    Java集合之Collections 剖析
    字符串类
    C++标准库
    << 操作符
    操作符的重载
    类中的重载
    友元
    二阶构造模式
    静态成员函数
  • 原文地址:https://www.cnblogs.com/FengZeng666/p/13945256.html
Copyright © 2011-2022 走看看