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

牛群的秘密通信

https://www.nowcoder.com/practice/f0047999594d4cd39f85d7347c6941af

知识点:栈

这道题属于栈的基本题目,只需要考虑三种括号的匹配。共有两种情况:

1.出现左括号,需要入栈,等待后续相应右括号的匹配

2.出现右括号,查看当前栈顶是否是对应的左括号,若不是,则匹配失败直接返回,若是,则左右括号匹配,将左括号出栈

最终遍历所有字符后,若栈不为空,则说明有多余左括号未匹配,则匹配失败,若栈为空,则匹配成功。

Java题解如下:

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return bool布尔型
     */
    public boolean is_valid_cow_communication (String s) {
        // write code here
        Deque<Character> stack = new ArrayDeque<>();
        Map<Character, Character> map = new HashMap<>();
        map.put(')', '(');
        map.put('}', '{');
        map.put(']', '[');
        char[] c = s.toCharArray();
        int n = c.length;
        for(int i = 0; i < n; i++) {
            if(c[i] == ')' || c[i] == '}' || c[i] == ']') {
                if(stack.isEmpty() || !stack.peek().equals(map.get(c[i]))) {
                    return false;
                }else {
                    stack.pop();
                }
            }else {
                stack.push(c[i]);
            }
        }
        return stack.isEmpty();
    }
}

全部评论

相关推荐

10-25 23:12
门头沟学院 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务