Leetcode 301 Solution

This article provides solution to leetcode question 301 (remove-invalid-parentheses)

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

Solution

class Solution { public: bool isvalid(const string& s) { int cnt = 0;
for (auto ch : s) { if (ch == '(') cnt++; else if (ch == ')') cnt--;
if (cnt < 0) return false; }
return cnt == 0; } vector<string> removeInvalidParentheses(string s) { queue<string> q; unordered_set<string> visited; vector<string> res; bool found = false;
q.push(s); visited.insert(s);
while (q.empty() == false) { auto str = q.front(); q.pop();
if (isvalid(str)) { res.push_back(str); found = true; }
if (found) continue;
for (int i = 0; i < str.size(); i++) { if (str[i] == '(' || str[i] == ')') { string next_str = str.substr(0, i) + str.substr(i + 1);
if (visited.find(next_str) != visited.end()) continue;
visited.insert(next_str); q.push(next_str); } } }
return res; } };