zoukankan      html  css  js  c++  java
  • [LeetCode] Expression Add Operators

    This post shares a very nice solution, which is rewritten below.

     1 class Solution {
     2 public:
     3     vector<string> addOperators(string num, int target) {
     4         int n = num.length();
     5         if (!n) return {};
     6         vector<string> ans;
     7         for (int i = 1; i <= n; i++) {
     8             string s = num.substr(0, i);
     9             long v = stol(s);
    10             if (s != to_string(v)) continue;
    11             add(ans, num, target, s, i, v, v, '$');
    12         }
    13         return ans;
    14     }
    15 private:
    16     void add(vector<string>& ans, string& num, int target, string s, int i, long v, long pv, char op) {
    17         int n = num.length();
    18         if (i == n && v == target)
    19             ans.push_back(s);
    20         else {
    21             for (int p = i + 1; p <= n; p++) {
    22                 string t = num.substr(i, p - i);
    23                 long d = stol(t);
    24                 if (t != to_string(d)) continue;
    25                 add(ans, num, target, s + '+' + t, p, v + d, d, '+');
    26                 add(ans, num, target, s + '-' + t, p, v - d, d, '-');
    27                 add(ans, num, target, s + '*' + t, p, (op == '+') ? v - pv + pv * d : ((op == '-') ? v + pv - pv * d: pv * d), pv * d, op);
    28             }
    29         }
    30     }
    31 };
  • 相关阅读:
    Java静态方法中使用注入类
    Java FTP辅助类
    Java SFTP辅助类
    MyBatis学习总结——批量查询
    MyBatis学习总结—实现关联表查询
    Redis集群搭建与简单使用
    SQL管理工具
    MySQL锁机制
    MySQL权限管理
    yii框架下使用redis
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4814732.html
Copyright © 2011-2022 走看看