20. 有效的括号

20. 有效的括号

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

 

示例 1:

输入:s = "()"
输出:true

示例 2:

输入:s = "()[]{}"
输出:true

示例 3:

输入:s = "(]"
输出:false

示例 4:

输入:s = "([)]"
输出:false

示例 5:

输入:s = "{[]}"
输出:true

 

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成

 

解析:

水题,栈即可

class Solution {
public:
    stack<char> ss;
    bool isValid(string s) {

        // int a[3];
        // memset(a, 0, sizeof(a));
        // for(int i = 0; i < s.length(); i++)
        // {
        //     if(s[i] == '(') a[0]++;
        //     else if(s[i] == ')') a[0]--;
        //     else if(s[i] == '{') a[1]++;
        //     else if(s[i] == '}') a[1]--;
        //     else if(s[i] == '[') a[2]++;
        //     else a[2]--;
            
        // }
        // if(a[0] == 0 && a[1] == 0 && a[2] == 0) return true;
        // return false;
        for(int i = 0; i < s.length(); i++)
        {
            if(s[i] == '(' || s[i] == '[' || s[i] == '{') ss.push(s[i]);
            else
            {
                if(s[i] == ')') 
                {

                    if(ss.empty() || ss.top() != '(') return false;
                    ss.pop();
                }
                else if(ss.empty() || s[i] == ']') 
                {
                    if(ss.empty() || ss.top() != '[') return false;
                    ss.pop();
                }
                else if(s[i] == '}') 
                {
                    if(ss.empty() || ss.top() != '{') return false;
                    ss.pop();
                }

            }

        }
        if(ss.empty()) return true;
        return false;


        

    }
};

 

posted @ 2022-08-06 00:15  WTSRUVF  阅读(25)  评论(0编辑  收藏  举报