leetcode Remove Invalid Parentheses
2015-12-01 20:06
375 查看
原题链接:https://leetcode.com/problems/remove-invalid-parentheses/
Note: The input string may contain letters other than the parentheses ( and ).
Examples:
“()())()” -> [“()()()”, “(())()”]
“(a)())()” -> [“(a)()()”, “(a())()”]
“)(” -> [“”]
bfs爆搜。。
Description
Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results.Note: The input string may contain letters other than the parentheses ( and ).
Examples:
“()())()” -> [“()()()”, “(())()”]
“(a)())()” -> [“(a)()()”, “(a())()”]
“)(” -> [“”]
bfs爆搜。。
class Solution { public: vector<string> removeInvalidParentheses(string s) { unordered_map<string, bool> vis; ans.clear(); vector<string> res; len = s.length(); vis[s] = true; queue<string> q; q.push(s); bool find = false; while (!q.empty()) { string tmp = q.front(); q.pop(); len = tmp.length(); if (isOk(tmp)) { res.push_back(tmp); find = true; } if (find) continue; for (size_t i = 0; i < len; i++) { string x = tmp.substr(0, i) + tmp.substr(i + 1); if (vis.find(x) == vis.end()) { vis[x] = true; q.push(x); } } } int n, val = -1; if (!(n = res.size())) return ans; val = res[0].size(); for (int i = 0; i < n; i++) { if (res[i].size() == val) ans.push_back(res[i]); else break; } return ans; } private: size_t len; vector<string> ans; bool isOk(string s) { stack<char> q; for (size_t i = 0; i < len; i++) { if (s[i] == '(') q.push('('); if (s[i] == ')') { if (!q.empty() && q.top() == '(') q.pop(); else q.push(')'); } } return q.empty(); } };
相关文章推荐
- 小小心情~
- 日期类的一些基本操作
- Unity3D跨平台时partial分部方法的使用
- QK对中断的特殊处理
- select unit_timestamp(); 和select unit_timestamp("1970-1-1 08:00:00")和 select from_unixtime(1)
- 搭建SVN仓库
- ajxs非异步调用验证
- [转载]深入理解C语言函数指针
- 配置pcl的时候,boost库找不到/usr/lib/x86_64-linux-gnu/
- 科技论文格式
- iOS:Masonry 英文原档介绍
- Xamarin.Android 实现虾米音乐搜索下载
- matlab-图片-imrect使用
- MySQL_CRUD基础语句
- Docker中级学习-Docker Registry
- 日期计算器的实现
- .NET编码解码(HtmlEncode与HtmlEncode)
- 算法—二叉查找树的相关一些操作及总结
- CentOS 5.x 多个ISO文件 安装方法(VMware)
- LeetCode 19 : Remove Nth Node From End of List (Java)