import java.util.Stack; /* 20. 有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 示例 3: 输入: "(]" 输出: false 示例 4: 输入: "([)]" 输出: false 示例 5: 输入: "{[]}" 输出: true 思路: 左括号压入栈, 右括号时候查看栈顶 */ public class p20 { public static boolean isValid(String s) { char []arr=s.toCharArray(); if(s.length()%2==1)return false; System.out.println(00000000000000); Stack<Character> stack=new Stack<Character>(); System.out.println(1111111111); for(int i=0;i<arr.length;i++){ if(arr[i]=='('||arr[i]=='['||arr[i]=='{'){ stack.push(arr[i]); System.out.println(stack.peek()); } else{ if(!stack.isEmpty()){ if(arr[i]==')'){ System.out.println(stack.peek()); char ch=stack.pop(); System.out.println(ch); if(ch!='(')return false; } else if(arr[i]==']'){ char ch=stack.pop(); if(ch!='[')return false; } else if(arr[i]=='}'){ char ch=stack.pop(); if(ch!='{')return false; } else return false; } else return false; } } if(stack.isEmpty())return true; return false; } public static void main(String[] args) { System.out.println(isValid("(")); }