Valid Parentheses Problems
Original12/22/25Less than 1 minute
Q20. Valid Parentheses
class Solution { public boolean isValid(String s) { if (s.length() % 2 != 0) return false; Deque<Character> stack = new ArrayDeque<>(); for (char c : s.toCharArray()) { switch(c) { case '(', '[', '{' -> stack.push(c); case ')' -> { if (stack.isEmpty() || stack.peek() != '(') return false; stack.pop(); } case ']' -> { if (stack.isEmpty() || stack.peek() != '[') return false; stack.pop(); } case '}' -> { if (stack.isEmpty() || stack.peek() != '{') return false; stack.pop(); } } } return stack.isEmpty(); } }
Q921. Minimum Add to Make Parentheses Valid
class Solution { public int minAddToMakeValid(String s) { int a = 0, b = 0; for (char c : s.toCharArray()) { if (c == '(') a++; else { if (a != 0) a--; else b++; } } return a + b; } }
Q1021. Remove Outermost Parentheses
class Solution { public String removeOuterParentheses(String s) { int count = 0, start = 0, end = 0; StringBuilder sb = new StringBuilder(); char[] c = s.toCharArray(); for (int i = 0; i < c.length; i++) { if (count == 0) { if (start < end) sb.append(s, start, end); start = i + 1; } if (c[i] == '(') { count++; } else { count--; if (count == 0) end = i; } } if (start < end) sb.append(s, start, end); return sb.toString(); } }
