C++ - 유효한 괄호

5737 단어
아직 완전히 이해되지는 않았지만 여기에 해결책이 있습니다.

class Solution {
public:
    bool isValid(string s) {
        unordered_map<char, char> bracketHash;

        bracketHash['{'] = '}';
        bracketHash['['] = ']';
        bracketHash['('] = ')';

        stack<char> st;

        char last;

        int checkVal;

        if (s.length() == 0)
        {
            return true;
        }

        if (s[0] == '}' || s[0] == ']' || s[0] == ')')
        {
            return false;
        }

        for (int i = 0; i < s.size(); ++i)    
        {
            if (s[i] == '{' || s[i] == '(' || s[i] == '[')
            {
                st.push(s[i]);
            }

            else
            {

                if (st.empty())
                {
                    return false;
                }
                else if (s[i] != bracketHash[st.top()])
                {
                    return false;
                }
                st.pop();
            }
        }


        return st.empty();
    }
};


내가 왜 게시하는지 궁금 할 것입니다. 파이썬에서 이것을 해결했다는 것을 알고 있습니다. 그냥 같은 논리를 채택했습니다. 컴퓨터처럼 생각하려면 아직 멀었습니다. 이해하는 시간이 필요합니다. 나는 모든 방법과 그것이 작동하는 이유를 이해하지만 내 머리에서 긴 브래킷을 시뮬레이트하기 위해 루프를 직접 실행하지 않았다는 것을 의미합니다.

좋은 웹페이지 즐겨찾기