Stack을 이용해서 쉽게 해결이 가능하다. 닫는 괄호가 나왔을 때, stack에서 pop한 값이 짝을 이루는 괄호가 아니라면 잘못된 괄호 쌍이 된다.
class Solution {
public boolean isValid(String s) {
Deque<Character> stack = new LinkedList<>();
boolean result = true;
for (int i = 0; i < s.length(); i++) {
Character c = s.charAt(i);
if (c == '(' || c == '{' || c == '[') {
stack.push(c);
} else {
if (stack.size() == 0) {
result = false;
break;
}
Character popC = stack.pop();
if ((c == ')' && popC != '(')) {
result = false;
break;
} else if (c == '}' && popC != '{') {
result = false;
break;
} else if (c == ']' && popC != '[') {
result = false;
break;
}
}
}
if (stack.size() != 0) {
result = false;
}
return result;
}
}
반응형
'Algorithm > LeetCode' 카테고리의 다른 글
[Java] LeetCode 22번 Generate Parentheses (0) | 2021.09.28 |
---|---|
[Java] LeetCode 21번 Merge Two Sorted Lists (0) | 2021.09.28 |
[Java] LeetCode 19번 Remove Nth Node From End of List (0) | 2021.09.26 |
[Java] LeetCode 17번 Letter Combinations of a Phone Number (0) | 2021.09.26 |
[Java] LeetCode 15번 3Sum (0) | 2021.09.26 |