C++LeetCode 구현(20.괄호 검증)

[LeetCode]20.유효한 Parentheses 검증 괄호
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
An input string is valid if:
  • Open brackets must be closed by the same type of brackets.
  • Open brackets must be closed in the correct order.
  • Note that an empty string is also considered valid.
    Example 1:
    Input: "()"
    Output: true
    Example 2:
    Input: "()[]{}"
    Output: true
    Example 3:
    Input: "(]"
    Output: false
    Example 4:
    Input: "([)]"
    Output: false
    Example 5:
    Input: "{[]}"
    Output: true
    이 문 제 는 입력 한 문자열 이 괄호 문자열 인지,괄호,괄호 를 포함 하 는 지 검증 합 니 다.스 택 을 사용 하여 문자열 을 입력 해 야 합 니 다.현재 문자 가 왼쪽 괄호 일 때 스 택 에 눌 러 넣 습 니 다.오른쪽 괄호 를 만 났 을 때 스 택 이 비어 있 으 면 false 로 돌아 갑 니 다.비어 있 지 않 으 면 스 택 꼭대기 요 소 를 꺼 냅 니 다.왼쪽 괄호 일 경우 계속 순환 하고 반대로 false 로 돌아 갑 니 다.코드 는 다음 과 같 습 니 다.
     방법 1:
    
    class Solution {
    public:
        bool isValid(string s) {
            stack<char> parentheses;
            for (int i = 0; i < s.size(); ++i) {
                if (s[i] == '(' || s[i] == '[' || s[i] == '{') parentheses.push(s[i]);
                else {
                    if (parentheses.empty()) return false;
                    if (s[i] == ')' && parentheses.top() != '(') return false;
                    if (s[i] == ']' && parentheses.top() != '[') return false;
                    if (s[i] == '}' && parentheses.top() != '{') return false;
                    parentheses.pop();
                }
            }
            return parentheses.empty();
        }
    };
    방법 2:
    
    class Solution {
    public:
        bool isValid(string s) {
            int n = s.size();
            if (n % 2 == 1) {
                return false;
            }
    
            unordered_map<char, char> pairs = {
                {')', '('},
                {']', '['},
                {'}', '{'}
            };
            stack<char> stk;
            for (char ch: s) {
                if (pairs.count(ch)) {
                    if (stk.empty() || stk.top() != pairs[ch]) {
                        return false;
                    }
                    stk.pop();
                }
                else {
                    stk.push(ch);
                }
            }
            return stk.empty();
        }
    };
    C++구현 LeetCode(20.검증 괄호)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 C++구현 검증 괄호 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기