(Leetcode) 20 - Valid Parentheses
New Year Gift - Curated List of Top 75 LeetCode Questions to Save Your Time
위 링크에 있는 추천 문제들을 시간이 있을때마다 풀어보려고 한다.
https://leetcode.com/problems/valid-parentheses/description/
어렵지 않은 문제이다.
내가 작성한 풀이
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
if (c == '(' || c == '{' || c == '[') {
stack.push(c);
continue;
}
if (stack.isEmpty()) {
return false;
}
boolean valid = false;
if (c == ')') {
valid = stack.peek() == '('
} else if (c == '}') {
valid = stack.peek() == '{';
} else if (c == ']') {
valid = stack.peek() == '[';
}
if (valid) {
stack.pop();
} else {
return false;
}
}
return stack.isEmpty();
}
}
괄호가 시작 된 후 순서에 따라 닫히는지에 대해서만 잘 케어해주면 해결되는 문제이다.
TC, SC
시간 복잡도는 O(n)이고, 공간 복잡도는 O(n)이다.