题解 | #牛群的秘密通信# 栈
牛群的秘密通信
https://www.nowcoder.com/practice/f0047999594d4cd39f85d7347c6941af
知识点
栈
思路
判断括号序列,可以建一个栈,遇到左括号将其压栈,遇到右括号则取出栈顶元素看是否匹配,如果栈为空或者栈顶元素不匹配则返回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;
}
};

