题解 | #牛群的秘密通信#
牛群的秘密通信
https://www.nowcoder.com/practice/f0047999594d4cd39f85d7347c6941af
考察栈数据结构的应用
对于这道题,如果碰到左括号就全部入栈,如果碰到右括号的话就从栈中取出栈顶元素与其配对,如果无法配对就返回false,不过需要注意,取栈中元素的时候需要判断是否是空栈。
具体Java代码如下所示
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 */ public boolean is_valid_cow_communication (String s) { // write code here Stack<Character> stack = new Stack<>(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == '(' || c == '[' || c == '{') { stack.push(c); //左括号就入栈 } else { //右括号的情况 if (stack.isEmpty()) return false; //此时没有对应的左括号 返回fasle Character popC = stack.pop(); if ((c == ')' && popC != '(' || (c == ']' && popC != '[') || (c == '}' && popC != '{'))) { //如果对应不上就返回false return false; } } } return true; } }