Valid Parentheses

来源:互联网 发布:成都真那么好么知乎 编辑:程序博客网 时间:2024/06/05 16:01

Given a string containing just the characters '(', ')','{', '}', '[' and ']', determine if the input string is valid.

The brackets must close in the correct order, "()" and "()[]{}" are all valid but"(]" and "([)]" are not.


题目解析:

1、利用堆栈存放左边的符号。然后如果来的是右边符号就与左边符号进行匹配。匹配成功就出栈,不匹配就返回为false。

2、最后如果栈不为空,则返回false。

3、如果匹配的过程中,栈为空返回false。


#include <iostream>#include <stack>using namespace std;bool isValid(string s) {stack<char> sc;string::size_type len = s.size();if (len == 0){return true;}for(string::size_type i = 0;i<len;i++){if(s[i] == '(' || s[i] == '{' || s[i] == '[')sc.push(s[i]);else{if (sc.empty()){return false;}if (s[i] == ')' && sc.top()=='('){sc.pop();}else if (s[i] == '}' && sc.top()=='{'){sc.pop();}else if (s[i] == ']' && sc.top()=='['){sc.pop();}else{return false;}}}if(sc.empty())return true;elsereturn false;}int main(void){string s("[");cout << isValid(s) << endl;system("pause");return 0;}


0 0