Given a string s containing just the characters (
,)
, {
, }
, [
and ]
, determine if the input string is valid.
An input string is valid if:
s
consists of parentheses only ()[]{}
.자료구조 수업 때가 생각나네요. 스택Stack
을 활용해서 괄호가 올바르게 들어갔는지 확인하는 문제입니다.
- 열린 괄호는
stack
에 추가합니다.- 닫힌 괄호가 나오면
top
의 괄호랑 매치가 되는지 확인해요.- 마지막으로 열린 괄호만 존재하는 경우,
stack
에 남아 있으므로stack
이 비었는지를 확인합니다.
import java.util.Stack;
public class Solution {
public boolean isValid(String s) {
Stack<Character> stk = new Stack<>();
for(int i = 0; i < s.length(); ++i){
char character = s.charAt(i);
switch (character){
case '(':
case '{':
case '[':
{
stk.push(character);
} break;
case ')':
if(stk.empty() || stk.peek() != '(') return false;
else stk.pop();
break;
case '}':
if(stk.empty() || stk.peek() != '{') return false;
else stk.pop();
break;
case ']':
if(stk.empty() || stk.peek() != '[') return false;
else stk.pop();
break;
}
}
return stk.empty();
}
}