题解 | #有效括号序列#

有效括号序列

https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @return bool布尔型
     */
    public boolean isValid (String s) {
        boolean result = true;
        // String s="([])";
        Map<Character, Character> symbol = new HashMap<>();
        symbol.put('(', ')');
        symbol.put('[', ']');
        symbol.put('{', '}');
        Stack<Character> deq = new Stack<>();
        Stack<Character> cache = new Stack<>();
        for (int i = 0; i < s.length(); i++) {
            if (symbol.values().contains(s.charAt(i))
                    || symbol.keySet().contains(s.charAt(i))) {
                deq.push(s.charAt(i));
            }
        }
        if (deq.size() % 2 != 0) {
            return false;
        }
        while (!deq.isEmpty()) {
            Character lastSym = deq.pop();
            if (symbol.values().contains(lastSym)) {
                cache.push(lastSym);
                continue;
            }
            if (symbol.keySet().contains(lastSym)) {
                if(cache.isEmpty()){
                    result=false;
                    break;
                }

                Character endSym = cache.pop();

                if (Objects.isNull(endSym) || !endSym.equals(symbol.get(lastSym))) {
                    result = false;
                    break;
                }
            }
        }
        return result;
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 11:29
点赞 评论 收藏
分享
那一天的Java_J...:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 11:30
找工作7个月,投了7000封,3段世界五百强实习,才有一个offer,牛油们肯定比我强吧
码农索隆:不对不对不对,实习经历这么厉害,简历也没少投,问题出在哪呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务