본문 바로가기
Computer Science/Problem Solve

LeetCode(릿코드) - Valid Parentheses

by snfjddl 2021. 12. 5.

출처: https://leetcode.com/problems/valid-parentheses/

3가지 형태의 괄호로 이루어진 문자열이 input으로 주어질 때, 해당 괄호가 유효한지 검증하는 문제입니다.

 

Point

1. Open bracket이 주어진 이후에는 반드시 같은 형태의 닫는 괄호가 나와야 한다.

2. Open bracket이 모두 닫히지 않은 형태도 고려해줘야 한다.

class Solution {
    public boolean isValid(String s) {
        boolean answer = true;
        
        Stack<Character> stack = new Stack();
        int idx = 0;
        while(answer && idx<s.length()) {
            switch(s.charAt(idx)) {
                case '(':
                    stack.push('(');
                    break;
                case '{':
                    stack.push('{');
                    break;
                case '[':
                    stack.push('[');
                    break;
                case ')':
                    if(!stack.isEmpty() && stack.peek() == '(') {
                        stack.pop();
                    } else {
                        answer = false;
                    }
                    break;
                case '}':
                    if(!stack.isEmpty() && stack.peek() == '{') {
                        stack.pop();
                    } else {
                        answer = false;
                    }
                    break;
                case ']':
                    if(!stack.isEmpty() && stack.peek() == '[') {
                        stack.pop();
                    } else {
                        answer = false;
                    }
                    break;
                
            }
            idx++;
        }
        
        if(!stack.isEmpty())
            answer = false;
        
        return answer;
    }
}
반응형

댓글