문제 난이도 : Easy


문제 유형 : Data Structures - Stack


문제 설명 간략 :

’(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’ 으로 구성된 String s가 주어지고 열고 닫느게 유효한지 구하여라.


제약사항

  • 1 <= s.length <= 10^4
  • s consists of parentheses only ‘()[]{}’.



자바 풀이

class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();

        Map<Character,Character> pair = new HashMap<Character,Character>();
        pair.put(']','[');
        pair.put('}','{');
        pair.put(')','(');

        for(int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if(stack.empty()) {
                stack.push(c);
            }else{
                char top = stack.peek();
                if(pair.get(c) != null && top == pair.get(c)) {
                    stack.pop();
                } else {
                    stack.push(c);
                }
            }
        }

        boolean valid = false;
        if(stack.empty()) {
            valid = true;
        }

        return valid;
    }
}



출처

해커랭크 문제