[题目]
Given a string containing just the characters ‘(’ and ‘)’, find the length of the longest valid (well-formed) parentheses substring.
For “(()”, the longest valid parentheses substring is “()”, which has length = 2.
Another example is “)()())”, where the longest valid parentheses substring is “()()”, which has length = 4.
Subscribe to see which companies asked this question.
[思路]
一道很水的题,考察了stack的使用,所以我决定再刷一题
[c++代码]
class Solution {
public:
bool isValid(string s) {
stack<char> characters;
bool valid = true;
for (char &cha: s)
{
if (cha == '(' || cha == '{' || cha == '[')
{
characters.push(cha);
} else if (cha == ')' || cha == '}' || cha == ']')
{
//查了ASCII表,正确匹配的符号之间的差为1或者2,其他都是无效的
if (characters.empty() || (cha - characters.top() != 2 && cha - characters.top() != 1))
{
valid = false;
break;
}
characters.pop();
}
}
//检查stack中符号是否全部匹配
if (!characters.empty())
{
valid = false;
}
return valid;
}
};