1.题目描述2.代码括号匹配问题可以使用栈解决这里java使用Deque接口(双端队列)去实现。先判断字符串长度的奇偶奇数则一定有至少一个括号不匹配。遍历字符串遇到左括号则入栈push。右括号则寻找匹配的左括号若没有匹配的左括号或栈空则匹配失败若找到匹配的左括号则弹出pop继续下一轮遍历。遍历完字符串后若栈不空还有左括号则匹配失败否则匹配成功。class Solution { public boolean isValid(String s) { int n s.length(); if (n % 2 1) { return false; } MapCharacter, Character pairs new HashMapCharacter, Character() {{ put(), (); put(], [); put(}, {); }}; DequeCharacter stack new LinkedListCharacter(); for (int i 0; i n; i) { char ch s.charAt(i); if (pairs.containsKey(ch)) { if (stack.isEmpty() || stack.peek() ! pairs.get(ch)) { return false; } stack.pop(); } else { stack.push(ch); } } return stack.isEmpty(); } }相关资料Java Deque 接口 - Java教程 - 菜鸟教程注以上题目来自力扣(LeetCode)
9-有效的括号
1.题目描述2.代码括号匹配问题可以使用栈解决这里java使用Deque接口(双端队列)去实现。先判断字符串长度的奇偶奇数则一定有至少一个括号不匹配。遍历字符串遇到左括号则入栈push。右括号则寻找匹配的左括号若没有匹配的左括号或栈空则匹配失败若找到匹配的左括号则弹出pop继续下一轮遍历。遍历完字符串后若栈不空还有左括号则匹配失败否则匹配成功。class Solution { public boolean isValid(String s) { int n s.length(); if (n % 2 1) { return false; } MapCharacter, Character pairs new HashMapCharacter, Character() {{ put(), (); put(], [); put(}, {); }}; DequeCharacter stack new LinkedListCharacter(); for (int i 0; i n; i) { char ch s.charAt(i); if (pairs.containsKey(ch)) { if (stack.isEmpty() || stack.peek() ! pairs.get(ch)) { return false; } stack.pop(); } else { stack.push(ch); } } return stack.isEmpty(); } }相关资料Java Deque 接口 - Java教程 - 菜鸟教程注以上题目来自力扣(LeetCode)