利用栈判断有效的括号
1 package com.wing.mall.cloud.account.modular.mq; 2 3 import java.util.HashMap; 4 import java.util.LinkedList; 5 import java.util.Map; 6 7 public class Solution { 8 private static final Map<Character,Character> map = new HashMap<Character,Character>(){{ 9 put('{','}'); put('[',']'); put('(',')'); put('?','?'); 10 }}; 11 12 public static boolean isValid(String s) { 13 if (s.length() > 0 && !map.containsKey(s.charAt(0))) return false; 14 LinkedList<Character> stack = new LinkedList<Character>() {{ add('?'); }}; 15 for (Character c : s.toCharArray()) { 16 if(map.containsKey(c)) stack.addLast(c); 17 else if(map.get(stack.removeLast()) != c) return false; 18 } 19 return stack.size() ==1; 20 } 21 22 public static void main(String[] args) { 23 String s = "{[]}"; 24 boolean valid = isValid(s); 25 System.out.println(valid); 26 } 27 28 }
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
示例 3:
输入: "(]"
输出: false
示例 4:
输入: "([)]"
输出: false
示例 5:
输入: "{[]}"
输出: true