Leetcode#20: Valid Parentheses

来源:互联网 发布:伴奏软件免费下载 编辑:程序博客网 时间:2024/06/03 14:05

题目描述:判断一个字符串是否有效,该字符串是括号“()[]{}”组成的,若前后括号是匹配的则有效,反之无效

思路:

  • 这是一道使用栈解决的题目,如果是左括号,就压入栈中;
  • 如果是右括号,就要判定其与栈顶元素是否匹配,若匹配则栈顶元素出栈;
  • 直到最后,若栈中的左括号全部出栈,栈为空则有效;反之栈非空,则无效

以下是C++实现,如有需要,请访问我的Github获取包含测试程序的完整源码。

class Solution {public:    bool isValid(string s)     {        //声明一个名为myStack的栈,栈中元素为char类型        stack <char> myStack;        for(int i = 0; i < s.length(); i++)        {            if(s[i] == '('||s[i] == '['||s[i] == '{')            {                myStack.push(s[i]);            }            else            {                //若s[0]没有进栈,那么肯定是无效的                if(myStack.empty())                {                    return false;                }                else if(myStack.top() == '(' && s[i] == ')')                {                    myStack.pop();                }                else if(myStack.top() == '[' && s[i] == ']')                {                    myStack.pop();                }                else if(myStack.top() == '{' && s[i] == '}')                {                    myStack.pop();                }                else                {                    return false;                }            }        }        return myStack.empty();    }};
原创粉丝点击