[leetcode 282]Expression Add Operators
来源:互联网 发布:易语言编程系统全套 编辑:程序博客网 时间:2024/06/10 05:45
Given a string that contains only digits 0-9
and a target value, return all possibilities to add binary operators (not unary) +
, -
, or *
between the digits so they evaluate to the target value.
Examples:
"123", 6 -> ["1+2+3", "1*2*3"] "232", 8 -> ["2*3+2", "2+3*2"]"105", 5 -> ["1*0+5","10-5"]"00", 0 -> ["0+0", "0-0", "0*0"]"3456237490", 9191 -> []
Credits:
Special thanks to @davidtan1890 for adding this problem and creating all test cases.
给定一个由数字字符组成的字符串,在任意字符之间加入+、-、*构成数学表达式,使得表达式的结果为所给的target
AC代码:
class Solution{public: vector<string> addOperators(string num, int target) { vector<string> res; string temp=""; int len=num.size(); for(int i=1; i<=len; ++i) { string curString=num.substr(0,i); if(curString.size()>1&&curString[0]=='0') continue; string nextString=num.substr(i,len-i); long long curNum=stringToLonglong(curString); temp=""; cal(nextString,target,curNum,curNum,curString,res); } return res; }private: long long stringToLonglong(string s) { stringstream ss; ss<<s; long long res; ss>>res; return res; } void cal(string num,int target,long long last,long long cur,string temp,vector<string> &res) { int len=num.size(); if(len==0&&target==cur) { res.push_back(temp); return ; } for(int i=1; i<=len; ++i) { string curString=num.substr(0,i); string nextString=num.substr(i,len-i); if(curString.size()>1&&curString[0]=='0') return ; long long curNum=stringToLonglong(curString); cal(nextString,target,curNum,cur+curNum,temp+"+"+curString,res); cal(nextString,target,-curNum,cur-curNum,temp+"-"+curString,res); cal(nextString,target,last*curNum,cur-last+last*curNum,temp+"*"+curString,res); } }};
注意:int容易溢出;000、012...数字违法、字符串组成的数字也可以为target
其他leetcode题目AC代码:https://github.com/PoughER
0 0
- [leetcode 282]Expression Add Operators
- leetcode(282): Expression Add Operators
- Leetcode 282, Expression Add Operators
- 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 题解
- cocos2d-js 自定义事件监听派发
- Android
- php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
- springmvc自定义日期转换
- 红黑树的优点
- [leetcode 282]Expression Add Operators
- Android--IntentService 简介
- 查询所有记录数大于1的表
- tomcat 文件配置
- 程序员技术练级攻略
- caffe示例实现之10LeNet的python接口
- Node.js15 os模块
- 如何调试bash脚本
- css选择器