[알고리즘] Leetcode_20_Valid_Parentheses

jeongjwon·2023년 3월 30일
0

알고리즘

목록 보기
16/48

Problem

Solve

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()를 반환하면 된다.

0개의 댓글