leetcode Remove Invalid Parentheses

题目连接

https://leetcode.com/problems/remove-invalid-parentheses/

Remove Invalid Parentheses

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();
	}
};
时间: 2024-10-10 03:04:35

leetcode Remove Invalid Parentheses的相关文章

[LeetCode] Remove Invalid Parentheses 移除非法括号

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: "()())()" -> ["()()()",

[LeetCode][JavaScript]Remove Invalid Parentheses

Remove Invalid Parentheses 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: "()())()"

【Leetcode】Remove Invalid Parentheses

题目链接:https://leetcode.com/problems/remove-invalid-parentheses/ 题目: 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 parent

[leetcode] 301. Remove Invalid Parentheses

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: "()())()" -> ["()()()",

[LeetCode] 301. Remove Invalid Parentheses 移除非法括号

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:"()())()" -> ["()()()", &

LeetCode题301—Remove Invalid Parentheses

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 ). Example 1: Input: "()())()" Output: ["()()

[leetcode]301. Remove Invalid Parentheses 去除无效括号

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 ). Example 1: Input: "()())()"Output: ["()()(

leetcode 301-Remove Invalid Parentheses(hard)

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 ). cases: when come to the ith position: 1. if number o

301.Remove Invalid Parentheses

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: "()())()" -> ["()()()",