https://leetcode.com/problems/valid-parentheses/description/
조건
1. 여는괄호는 반드시 같은 타입의 괄호로 닫혀야한다
2. 여는 괄호는 반드시 올바른 순서대로 닫혀야 한다.
3. 모든 닫는 괄호는 여는 괄호와 같은 타입이여야 한다.
예시
Example 1:
Input: s = "()"
Output: true
Example 2:
Input: s = "()[]{}"
Output: true
Example 3:
Input s = "(]"
Output: false
import java.util.*;
class Solution {
boolean isValid(String s) {
Stack<Character> stack = new Stack<>();//char형 스택
//매개변수 String 반복
for (int i = 0; i < s.length(); i++) {
//여는괄호가 우선 들어오는지 확인
if (s.charAt(i) == '(' || s.charAt(i) == '{' || s.charAt(i) == '[') {
stack.push(s.charAt(i));
} else {
//여는괄호가 먼저 들어오지 않았다 -> false
if(stack.isEmpty()){
return false;
}
//여는괄호에 맞춰 닫는괄호확인
if(stack.peek() == '(' && s.charAt(i) == ')'
|| stack.peek() == '{' && s.charAt(i) == '}'
|| stack.peek() == '[' && s.charAt(i) == ']')
{
//일치한다면 pop()
stack.pop();
} else {
//틀릴 시 false
return false;
}
}
}
//stack이 비어있다면 올바른 괄호
return stack.isEmpty();
}
}
'Algorithm > leetcode' 카테고리의 다른 글
[leetcode] 1021.Remove Outermost Parentheses (0) | 2023.08.28 |
---|---|
[leetcode] 844.Backspace String compare (0) | 2023.08.27 |
[leetcode] 155.Min Stack (0) | 2023.08.26 |
[leetcode] 856.Score of Parentheses(Retry) (0) | 2023.08.20 |
[leetcode] 682.Baseball Game (0) | 2023.08.19 |