题解 | #有效括号序列#
有效括号序列
https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
//用栈的先进后出来保证括号的匹配 *********
//用一个栈把左括号存起来 再遍历字符串 遇到右括号则pop出匹配的左括号
// stackpop完则说明
bool isValid(string s) {
// write code here
stack<char> s1;
for(size_t i = 0;i<s.size();i++)
{
switch (s[i]) {
case '(':
case '{':
case '[':
s1.push(s[i]);
break;
case ')':
if(s1.empty() || s1.top()!='(')
return false;
s1.pop();
break;
case '}':
if(s1.empty() || s1.top()!='{')
return false;
s1.pop();
break;
case ']':
if(s1.empty() || s1.top()!='[')
return false;
s1.pop();
break;
}
}
return s1.empty();
}
};
括号匹配问题:
遍历所给的字符串,用一个栈将左括号存起来(栈的特性可以保证左右括号的匹配),遇到右括号则判断栈是否为空或者为相应的左括号。是的话将栈顶元素弹出,继续遍历,不是相应的左括号或者栈为空则return false。
查看15道真题和解析