题解 | #牛群的秘密通信#

牛群的秘密通信

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
#栈##HashMap#
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务