LeetCode: Valid Parentheses

이원희·2020년 11월 29일
0

📝 PS

목록 보기
12/65
post-thumbnail

이 문제는 알고리즘 풀다보면 진짜 많이 마주친다.
기본이 이 문제이고, 여기서 응용을 해서 나오기도 한다.

우선 나는 stack을 이용해서 풀었고,
HashMap을 사용하면 좀 더 코드를 짧게 작성할 수 있는데 그냥 if문으로만 작성했다.

문제 풀이

나는 false를 return하는 경우에 대해서 다 작성했다.

import java.util.*;
class Solution {
    public boolean isValid(String str) {
        Stack<Character> s = new Stack<>();
        for(int index = 0; index < str.length(); index++) {
            char temp = str.charAt(index);
            if(s.isEmpty()) {
                if(temp == ')' || temp == '}' || temp == ']') {
                    return false;
                }
                s.add(temp);
            }
            else {
                if(temp == ')') {
                    if(s.peek() != '(') {
                        return false;
                    }
                    s.pop();
                    continue;
                }
                else if(temp == '}') {
                    if(s.peek() != '{') {
                        return false;
                    }
                    s.pop();
                    continue;
                }
                else if (temp == ']') {
                    if(s.peek() != '[') {
                        return false;
                    }
                    s.pop();
                    continue;
                }
                s.add(temp);
            }
        }
                   
        if(!s.isEmpty()) {
            return false;
        }
        return true;
    }
}

0개의 댓글