题解 | #有效括号序列#
有效括号序列
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。