[leetCode] Expression Add Operators
来源:互联网 发布:上海sai软件培训 编辑:程序博客网 时间:2024/05/29 11:47
题意:给定只有0-9组成的字符串,在字符串加上二元+-*使之成为一个算式,其结果等于指定的一个数
思路1:首先枚举组成算式,再用栈进行计算。但是在栈的时间耗费太长,超时
思路2:这个是我从网上找的。递归加运算符号。用cur表示当前值,用diff表示变化值,这个思路比较巧妙,+和-的diff和cur比较好理解。*的不太好理解,多理解就发现巧妙之处了,上代码。
class Solution {public: vector<string> addOperators(string num, int target) { vector<string> res; check(num,target,0,0,"",res); return res; } void check(string num,long long target,long long cur,long long diff,string out,vector<string> &res) { if(num.size()==0) { if(cur==target) res.push_back(out); return; } int i; for(i=1;i<=num.size();i++) { string c=num.substr(0,i); if(c.size()>1&&c[0]=='0') break; string n=num.substr(i); if(out.size()>0) { check(n,target,cur+stoll(c),stoll(c),out+"+"+c,res); check(n,target,cur-stoll(c),-stoll(c),out+"-"+c,res); check(n,target,cur-diff+diff*stoll(c),diff*stoll(c),out+"*"+c,res); } else { check(n,target,stoll(c),stoll(c),c,res); } } }};
0 0
- LeetCode:Expression Add Operators
- 【LeetCode】Expression Add Operators
- Expression Add Operators -- leetcode
- Leetcode -- Expression Add Operators
- LeetCode -- Expression Add Operators
- LeetCode Expression Add Operators
- leetcode:Expression Add Operators
- 《leetcode》:Expression Add Operators
- [leetCode] Expression Add Operators
- [LeetCode]Expression Add Operators
- [LeetCode] Expression Add Operators
- 【LeetCode】Expression Add Operators
- Expression Add Operators(leetcode)
- Leetcode | Expression Add Operators
- [leetcode 282]Expression Add Operators
- [leetcode] 282. Expression Add Operators
- [LeetCode]282. Expression Add Operators
- leetcode(282): Expression Add Operators
- ajax的使用及数据的获取
- asp.net——$是什么
- crack me160题 第十一题(序号40)DaNiEl-RJ 注册机
- 解决:JS代码URL传中文参数乱码
- 【JZOJ4883】【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰
- [leetCode] Expression Add Operators
- 【模板】 排序算法
- Hadoop Mapreducer两文件数据求交拼接
- Python基础
- JavaScript高级--ajax
- 用WeX5制作PPT
- php与前端(四): 弹出框layer 的使用
- 正则表达式
- luogu2420 让我们异或和吧