스택을 이용.
(
[
{
이면 stack에 push.
)
]
}
이면 stack에서 pop.
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for(int i = 0; i < s.length(); i++) {
if(s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{') {
stack.push(s.charAt(i));
}else if(stack.empty()) {
return false;
}else if(s.charAt(i) == ')' && stack.pop() != '('
|| s.charAt(i) == ']' && stack.pop() != '['
|| s.charAt(i) == '}' && stack.pop() != '{') {
return false;
}
}
return stack.empty();
}
}
disscuss에 있는 풀이.. 세상에..
열고 닫히는 순서가 보장되어야 하기 때문에..
입력이 ([{ }])
라면 좌우가 동일해야하기 때문에
여는( [ {
괄호이면 stack에 해당하는 닫는 괄호를 삽입.
} ] )
은 뒤 나머지 괄호와 같아야한다.
public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
for (char c : s.toCharArray()) {
if (c == '(')
stack.push(')');
else if (c == '{')
stack.push('}');
else if (c == '[')
stack.push(']');
else if (stack.isEmpty() || stack.pop() != c)
return false;
}
return stack.isEmpty();
}
간략하고도 어려운 해결법 존재... 세상에..