LeetCode 2016.3.7 282,241
2016-03-07 22:36
417 查看
282 Expression Add Operators
241 Different Ways to Add Parentheses
class Solution { public: vector<string> ans; long long int strtoNum(string str) { long long int p=1; if (str[0]=='-') { p=-1; str=str.substr(1); } long long int ans=0; for(long long int i=0;i<str.size();i++) { ans= ans*10+str[i]-'0'; } return ans*p; } vector<string> addOperators(string num, long long int target) { dfs(num,target,0,0,""); return ans; } void dfs(string num,long long int target,long long int currentSum, long long int preVal,string currentExp) { if (num.size()==0) { if (currentSum==target) { ans.push_back(currentExp); } return ; } for(long long int i=1;i<=num.size();i++) { string left=num.substr(0,i); string right=num.substr(i); long long int currentVal=strtoNum(left); if (num[0]=='0' && left.size()>1) break; if (currentExp.size()==0) { dfs(right,target,currentVal,currentVal,left); } else { dfs(right,target,currentSum+currentVal,currentVal,currentExp+"+"+left); dfs(right,target,currentSum-currentVal,-currentVal,currentExp+"-"+left); dfs(right,target,currentSum-preVal+preVal*currentVal,currentVal*preVal,currentExp+"*"+left); } } return ; } };
241 Different Ways to Add Parentheses
class Solution { public: vector<int> diffWaysToCompute(string input) { vector<int> ans; int len=input.size(); for(int i=0;i<len;i++) { if (input[i]=='+' || input[i]=='-' || input[i]=='*') { vector<int> left = diffWaysToCompute(input.substr(0,i)); vector<int> right = diffWaysToCompute(input.substr(i+1)); int lenleft=left.size(); int lenright=right.size(); for(int j=0;j<lenleft;j++) { for(int k=0;k<lenright;k++) { if (input[i]=='+') ans.push_back(left[j]+right[k]); else if (input[i]=='-') ans.push_back(left[j]-right[k]); else if (input[i]=='*') ans.push_back(left[j]*right[k]); } } } } if(ans.empty()) ans.push_back(atoi(input.c_str())); return ans; } };
相关文章推荐
- Oracle 11g RAC客户端使用SCAN IP无法连接问题
- 无线板卡接口定义
- 快速创建数组
- nginx(五)rewrite
- STL---Set(集合)
- java防盗链
- D7
- 秋夕名節에 奉仕作業團活動1938
- java之args[0]
- Get Paid to Read Ads with 7 Most Trusted PTC Sites
- 【making tools】:获得10000个随机密码
- ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist的原因分析
- windows的Timer和写文件方式串口注意!
- 高性能Linux服务器 第6章 ext3文件系统反删除利器ext3grep
- android中的HandlerThread类的学习
- linux基础命令
- 【JAVA】32、对象的创建与使用
- OPENCV图像变换-1
- Java基础4——多线程
- A. Watchmen(Codeforces 650A)