[题目] 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; } };