bool isValid(string s) {
string prev;
auto removeAll = [](const string& str, const string& pat) {
string r;
for (size_t i = 0; i < str.size();) {
if (str.compare(i, 2, pat) == 0) i += 2;
else r += str[i++];
}
return r;
};
while (s != prev) {
prev = s;
s = removeAll(removeAll(removeAll(s, "()"), "[]"), "{}");
}
return s.empty();
}
public boolean isValid(String s) {
String prev = "";
while (!s.equals(prev)) {
prev = s;
s = s.replace("()", "").replace("[]", "").replace("{}", "");
}
return s.isEmpty();
}
def is_valid(s):
prev = ''
while s != prev:
prev = s
s = s.replace('()', '').replace('[]', '').replace('{}', '')
return s == ''
function isValid(s: string): boolean {
let prev = '';
while (s !== prev) {
prev = s;
s = s.replaceAll('()', '').replaceAll('[]', '').replaceAll('{}', '');
}
return s === '';
}
bool isValid(string s) {
vector<char> stack;
for (char c : s) {
if (c == '(' || c == '[' || c == '{') {
stack.push_back(c);
} else {
bool had = !stack.empty();
char top = 0;
if (had) { top = stack.back(); stack.pop_back(); }
if (top == '(' && c != ')') return false;
if (top == '[' && c != ']') return false;
if (top == '{' && c != '}') return false;
if (!had) return false;
}
}
return stack.empty();
}
public boolean isValid(String s) {
Deque<Character> stack = new ArrayDeque<>();
for (char c : s.toCharArray()) {
if (c == '(' || c == '[' || c == '{') {
stack.push(c);
} else {
Character top = stack.isEmpty() ? null : stack.pop();
if (top != null && top == '(' && c != ')') return false;
if (top != null && top == '[' && c != ']') return false;
if (top != null && top == '{' && c != '}') return false;
if (top == null) return false;
}
}
return stack.isEmpty();
}
def is_valid(s):
stack = []
for c in s:
if c in '([{':
stack.append(c)
else:
top = stack.pop() if stack else None
if top == '(' and c != ')': return False
if top == '[' and c != ']': return False
if top == '{' and c != '}': return False
if top is None: return False
return len(stack) == 0
function isValid(s: string): boolean {
const stack: string[] = [];
for (const c of s) {
if (c === '(' || c === '[' || c === '{') {
stack.push(c);
} else {
const top = stack.pop();
if (top === '(' && c !== ')') return false;
if (top === '[' && c !== ']') return false;
if (top === '{' && c !== '}') return false;
if (top === undefined) return false;
}
}
return stack.length === 0;
}
bool isValid(string s) {
unordered_map<char, char> pairs = {{')', '('}, {']', '['}, {'}', '{'}};
vector<char> stack;
for (char c : s) {
if (pairs.count(c)) {
if (stack.empty() || stack.back() != pairs[c]) return false;
stack.pop_back();
} else {
stack.push_back(c);
}
}
return stack.empty();
}
public boolean isValid(String s) {
Map<Character, Character> pairs = Map.of(')', '(', ']', '[', '}', '{');
Deque<Character> stack = new ArrayDeque<>();
for (char c : s.toCharArray()) {
if (pairs.containsKey(c)) {
if (stack.isEmpty() || !stack.pop().equals(pairs.get(c))) return false;
} else {
stack.push(c);
}
}
return stack.isEmpty();
}
def is_valid(s):
pairs = {')': '(', ']': '[', '}': '{'}
stack = []
for c in s:
if c in pairs:
if not stack or stack.pop() != pairs[c]:
return False
else:
stack.append(c)
return not stack
function isValid(s: string): boolean {
const pairs: Record<string, string> = { ')': '(', ']': '[', '}': '{' };
const stack: string[] = [];
for (const c of s) {
if (c in pairs) {
if (stack.pop() !== pairs[c]) return false;
} else {
stack.push(c);
}
}
return stack.length === 0;
}
bool isValid(string s) {
if (s.size() % 2 == 1) return false;
vector<char> stack;
for (int i = 0; i < (int)s.size(); i++) {
char c = s[i];
if (c == '(') stack.push_back(')');
else if (c == '[') stack.push_back(']');
else if (c == '{') stack.push_back('}');
else if (stack.empty() || stack.back() != c) return false;
else stack.pop_back();
if ((int)stack.size() > (int)s.size() - 1 - i) return false;
}
return stack.empty();
}
public boolean isValid(String s) {
if (s.length() % 2 == 1) return false;
Deque<Character> stack = new ArrayDeque<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '(') stack.push(')');
else if (c == '[') stack.push(']');
else if (c == '{') stack.push('}');
else if (stack.isEmpty() || stack.pop() != c) return false;
if (stack.size() > s.length() - 1 - i) return false;
}
return stack.isEmpty();
}
def is_valid(s):
if len(s) % 2 == 1: return False
stack = []
for i, c in enumerate(s):
if c == '(': stack.append(')')
elif c == '[': stack.append(']')
elif c == '{': stack.append('}')
elif not stack or stack.pop() != c: return False
if len(stack) > len(s) - 1 - i: return False
return not stack
function isValid(s: string): boolean {
if (s.length % 2 === 1) return false;
const stack: string[] = [];
for (let i = 0; i < s.length; i++) {
const c = s[i];
if (c === '(') stack.push(')');
else if (c === '[') stack.push(']');
else if (c === '{') stack.push('}');
else if (stack.pop() !== c) return false;
if (stack.length > s.length - 1 - i) return false;
}
return stack.length === 0;
}