public static boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
char[] chars = s.toCharArray();
for(int i = 0 ; i < chars.length ; i++){
if(stack.isEmpty()) stack.push(chars[i]);
else{
Character peek = stack.peek();
if((peek == '(' && chars[i] == ')') ||
(peek == '[' && chars[i] == ']') ||
(peek == '{' && chars[i] == '}')) stack.pop();
else stack.push(chars[i]);
}
}
return stack.isEmpty();
}
문자열을 배열로 만들고 각각의 문자들을 stack에 push/add 하는데,
만약 stack.peek()의 값과 현재 문자가 쌍이라면 pop()을 하고, 그렇지 않다면 그 문자를 push/add 한다.
문자 배열을 다 순회 후, stack이 비지 않았다면 쌍이 완벽하지 않았기 때문에 false이고 그 반대는 true이므로 stack.isEmpty()를 반환하면 된다.