2026/3/25 10:55:08
网站建设
项目流程
新加坡网站开发公司,室内装饰网站模板,政务网站开发协议,聊城专业网站建设题目描述#xff1a;解题思路#xff1a;栈先入后出特点恰好与本题括号排序特点一致#xff0c;即若遇到左括号入栈#xff0c;遇到右括号时将对应栈顶左括号出栈#xff0c;则遍历完所有括号后 stack 仍然为空#xff1b;
建立哈希表 dic 构建左右括号对应关系#xff…题目描述解题思路栈先入后出特点恰好与本题括号排序特点一致即若遇到左括号入栈遇到右括号时将对应栈顶左括号出栈则遍历完所有括号后 stack 仍然为空建立哈希表 dic 构建左右括号对应关系key 左括号value 右括号这样查询 2 个括号是否对应只需 O(1) 时间复杂度建立栈 stack遍历字符串 s 并按照算法流程一一判断。算法流程如果 a 是左括号则入栈 push否则通过哈希表判断括号对应关系若 stack 栈顶出栈括号 stack.pop() 与当前遍历括号 c 不对应则提前返回 false。代码class Solution { private static final MapCharacter,Character mapnew HashMapCharacter,Character(); static{ map.put({,}); map.put([,]); map.put((,)); map.put(?,?); } public boolean isValid(String s) { if(s.length()0!map.containsKey(s.charAt(0))){ return false; } LinkedListCharacter stacknew LinkedListCharacter(); stack.add(?); for(Character a:s.toCharArray()){ if(map.containsKey(a)){ stack.addLast(a); } else if(map.get(stack.removeLast())!a){ return false; } } return stack.size()1; } }代码解析本题用链表代替栈的结构入栈对应stack.addLast(a);出栈对应stack.removeLast()。