题解 | #牛群的秘密通信#
牛群的秘密通信
https://www.nowcoder.com/practice/f0047999594d4cd39f85d7347c6941af
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 */ public boolean is_valid_cow_communication (String s) { // write code here Map<Character, Character> map = new HashMap<>(); map.put(')', '('); map.put(']', '['); map.put('}', '{'); Stack<Character> stack = new Stack<>(); for (char c : s.toCharArray()) { switch (c) { case '(': case '[': case '{': stack.push(c); break; case ')': case ']': case '}': if (stack.isEmpty() || map.get(c) != stack.pop()) return false; } } return stack.isEmpty(); } }
- 定义一个Map,存储右括号与左括号的对应关系;
- 定义一个栈S:遇到左括号就入栈,遇到右括号 c 就出栈元素 A
- 根据 c 去Map中找到对应的左括号 B,如果不等,返回 false
- 或者栈中元素空,返回false
- 最后S如果是空的,返回 true,反之false