知识点
栈
思路
判断括号序列,可以建一个栈,遇到左括号将其压栈,遇到右括号则取出栈顶元素看是否匹配,如果栈为空或者栈顶元素不匹配则返回false,都匹配好后不可以剩下左括号不匹配,验证栈是否为空。
时间复杂度
只有遍历一遍字符串,时间复杂度为
AC code(C++)
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 */ bool is_valid_cow_communication(string s) { stack<char> stk; for (auto c : s) { if (c == '(' or c == '[' or c == '{') stk.push(c); else { if (stk.empty()) return false; auto t = stk.top(); stk.pop(); if (!check(t, c)) return false; } } return stk.empty(); } bool check(char x, char y) { if (x == '(' and y == ')') return true; if (x == '[' and y == ']') return true; if (x == '{' and y == '}') return true; return false; } };