/* * 有3种括号,({[必须与)}]正确匹配,只需要考虑括号的匹配性,不需要考虑优先级。 * 算法思想:使用栈数据结构,当遇到左括号的时候入栈,遇到右括号的时候出栈,这样后进栈的左括号必须与先遇到的右括号匹配,否则返回false. * */ import java.net.StandardSocketOptions; import java.util.Deque; import java.util.HashMap; import java.util.LinkedList; import java.util.Map; public class ParenIsValid { public boolean isValid(String s) { Map<Character,Character> map = new HashMap<Character,Character>(); map.put('}','{'); map.put(')','('); map.put(']','['); Deque<Character> stack = new LinkedList<Character>(); if(s.length() % 2 == 1){ return false; } for(int i = 0; i < s.length(); i++){ if(map.containsKey(s.charAt(i))){ if(stack.isEmpty() || stack.peek() != map.get(s.charAt(i))){ return false; } stack.pop(); }else{ stack.push(s.charAt(i)); } } return stack.isEmpty(); } //示例代码 public static void main(String[] args) { ParenIsValid p = new ParenIsValid(); String s = "[{]}"; System.out.println(p.isValid(s)); } }
leetcode---有效括号问题
最新推荐文章于 2024-04-28 14:34:37 发布
"该篇博客介绍了一种使用栈数据结构检查括号是否正确匹配的方法。通过创建一个映射来关联左括号和右括号,当遇到左括号时入栈,遇到右括号时出栈,确保括号的配对正确性。如果括号数量不均衡或栈非空,返回false,否则返回true。示例代码中展示了如何应用这个算法来验证字符串如'[{]}
摘要由CSDN通过智能技术生成