leetcode 20.有效的括号

20. 有效的括号

题目描述

leetcode 20.有效的括号_第1张图片

解题思路

因为是要判断括号是否是一个有效的括号,也就是左括号在前,右括号在后,我们就需要使用堆栈 来保存出现过的左括号,利用其后进先出的特性。遍历字符串的过程中,如果遇到左括号,压入栈中,遇到右括号时,首先需要判断栈内有没有元素,其次再判断栈顶元素是否是对应的左括号。

倘若栈区为空,还要访问栈顶,会出错,这里就要求我们在对栈进行操作的时候,需要先判断堆是否为空,再判断栈的栈顶元素是否是我们想要的

代码实现

class Solution {
public:
    bool isValid(string s) 
    {
        //创建一个栈区,用来顺序保左括号 特性 先进后出
        stack <char> s1;
        for(auto x : s)
        {
            if(x == '(' || x == '[' || x == '{')
            {
                s1.push(x);
            }
            if(x == ')')
            {
                if(s1.empty() ||s1.top() != '(' )
                {
                    return false;
                }
                s1.pop();
            } 
            
            else if(x == ']' )
            {
                if(s1.empty() || s1.top() != '['  )
                {
                    return false;
                }
                s1.pop();
            }
            else if(x == '}' )
            {
                if(s1.empty() || s1.top() != '{' )
                {
                    return false;
                }  
                s1.pop();              
            }
            
        }
        //字符串遍历完 
        //如果栈中还有元素 那么返回false
        if(s1.size() != 0)
        {
            return false;
        }
        return true;
    }
};

你可能感兴趣的:(c++,leetcode,leetcode,算法,职场和发展)