20. Valid Parentheses

来源:互联网 发布:申请网络记者 编辑:程序博客网 时间:2024/05/22 10:51

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.

题意:判断给定的一个括号串是否合法。

思路:利用栈,遇见左括号入栈,遇见右括号,配对则出栈或否则则报错。简单题,而且以前肯定遇到过,一次AC吧~

class Solution {public:bool isValid(string s) {stack<char> stac;stac.push('$');int i = 0;while (i < s.size()){switch (stac.top()){case '$':if (s[i] == '(' || s[i] == '[' || s[i] == '{'){stac.push(s[i]);i++;}elsereturn false;break;case '(':if (s[i] == ')'){stac.pop();i++;}else if (s[i] == '(' || s[i] == '[' || s[i] == '{'){stac.push(s[i]);i++;}elsereturn false;break;case '[':if (s[i] == ']'){stac.pop();i++;}else if (s[i] == '(' || s[i] == '[' || s[i] == '{'){stac.push(s[i]);i++;}elsereturn false;break;case '{':if (s[i] == '}'){stac.pop();i++;}else if (s[i] == '(' || s[i] == '[' || s[i] == '{'){stac.push(s[i]);i++;}elsereturn false;break;default:return false;break;}}if (stac.top() == '$')return true;elsereturn false;}};



0 0