Valid Parentheses
Updated:
BOJ의 괄호문제가 method형태로 나왔을뿐이다.
- 올바른 괄호를 만들어주기 위해 Stack 혹은 Deque를 쓴다(LIFO를 지키는 자료구조면 사실 뭐든 가능하다.)
- 그다음 여는 괄호(‘(‘,’{‘,’[‘)가 들어오면 Deque에 넣어준다
- 만약 그렇지 않다면, 제일 늦게 들어간 원소를 빼낸다음 괄호의 모양이 맞는지 체크를 한다
- 그런데 만약 비어있으면 불가능하다 혹은 모양이 안맞거나
- 그리고 맨 마지막에, 여는괄호가 더 많을수도있기에, Deque는 항상 비어있어야 한다, 그렇지않다면 불가능하다
by Java
class Solution {
public boolean isValid(String s) {
Deque<Character> q = new ArrayDeque<>();
boolean no = false;
for(int i=0;i<s.length();i++) {
char c= s.charAt(i);
if(c=='(' || c=='{' || c=='[') {
q.add(c);
}
else {
if(q.isEmpty()) {
no = true;
break;
}
char top = q.pollLast();
if(top=='(' && c==')' || top=='{' && c=='}' || top=='[' && c==']') {
continue;
}
else {
no= true;
break;
}
}
}
if(!no && q.isEmpty()) return true;
return false;
}
}
Leave a comment