<( ̄︶ ̄)小小程序员

<( ̄︶ ̄)小小程序员

题目:给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。

#include<iostream>
#include<vector>
#include<map>
#include<unordered_map>
#include<stack>
using namespace std;

unordered_map<char, char> up = {
    {'(' , ')'},
    {'{' , '}'},
    {'[' , ']'},
};

class Solution 
{
public:
    bool isValid(string s)
    {
        stack<char> st;
        for (char c : s)
        {
            if (up.count(c))  //判断c是否是up的键,是的话就压栈
            {
                st.push(c);   
            }
            else if(st.empty() ||  up[st.top()] != c)
            {
                return false;
            }
            else //up[st.top()] == c
            {
                st.pop();
            }
        }
        return st.empty();
    }
};

int main()
{
    Solution a;

    cout <<"a.isPalindrome : " << a.isValid("{([])}") << endl;
    return 0;
}

10-27 10:47