博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
241. Different Ways to Add Parentheses
阅读量:5227 次
发布时间:2019-06-14

本文共 1562 字,大约阅读时间需要 5 分钟。

Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are +- and *.

Example 1:

Input: "2-1-1"Output: [0, 2]Explanation: ((2-1)-1) = 0 (2-(1-1)) = 2

Example 2:

Input: "2*3-4*5"Output: [-34, -14, -10, -10, 10]Explanation: (2*(3-(4*5))) = -34 ((2*3)-(4*5)) = -14 ((2*(3-4))*5) = -10 (2*((3-4)*5)) = -10 (((2*3)-4)*5) = 10

 

Approach #1: 

namespace studycat {    int add(int x, int y) { return x + y; }    int sub(int x, int y) { return x - y; }    int mul(int x, int y) { return x * y; }}class Solution {public:    vector
diffWaysToCompute(string input) { return helper(input); } private: unordered_map
> memo; const vector
& helper(const string& input) { if (memo.count(input)) return memo[input]; vector
ans; for (int i = 0; i < input.length(); ++i) { char op = input[i]; if (op == '+' || op == '-' || op == '*') { const string left = input.substr(0, i); const string right = input.substr(i+1); const vector
& l = helper(left); const vector
& r = helper(right); std::function
f; switch(op) { case '+': f = studycat::add; break; case '-': f = studycat::sub; break; case '*': f = studycat::mul; break; } for (int i : l) for (int j : r) ans.push_back(f(i, j)); } } if (ans.empty()) ans.push_back(std::stoi(input)); memo[input].swap(ans); return memo[input]; }};

  

Analysis:

http://zxi.mytechroad.com/blog/leetcode/leetcode-241-different-ways-to-add-parentheses/

 

转载于:https://www.cnblogs.com/ruruozhenhao/p/10331475.html

你可能感兴趣的文章
javascript keycode大全
查看>>
前台freemark获取后台的值
查看>>
log4j.properties的作用
查看>>
游戏偶感
查看>>
Leetcode: Unique Binary Search Trees II
查看>>
C++ FFLIB 之FFDB: 使用 Mysql&Sqlite 实现CRUD
查看>>
Spring-hibernate整合
查看>>
c++ map
查看>>
exit和return的区别
查看>>
js += 含义(小知识)
查看>>
B2321 [BeiJing2011集训]星器 数学&&物理
查看>>
201571030319 四则运算
查看>>
RestTemplate 调用本地服务 connection refused
查看>>
.NET方向高级开发人员面试时应该事先考虑的问题
查看>>
台达PLC modbus 不支持04功能码
查看>>
发布一个JavaScript工具类库jutil,欢迎使用,欢迎补充,欢迎挑错!
查看>>
discuz 常用脚本格式化数据
查看>>
洛谷P2777
查看>>
PHPStorm2017设置字体与设置浏览器访问
查看>>
SQL查询总结 - wanglei
查看>>