题目链接:https://leetcode.com/problems/valid-parentheses/
解题思路:
这是括号匹配的问题,就是常见栈方法。
如果出现左括号,就把左括号压栈。
如果是右括号,检查栈如果为空,证明不能匹配,如果栈不空,弹出top,与当前扫描的括号检查是否匹配。
全部字符都检查完了以后,判断栈是否为空,空则正确都匹配,不空则证明有没匹配的。
检查:字符是用==,检查String是用.isEqual(),因为String是引用类型,值相等但是地址可能不等。
1 class Solution { 2 public boolean isValid(String s) { 3 4 Stack<Character> stack = new Stack<Character>(); 5 6 for(int i=0;i<s.length();i++) 7 { 8 char ch = s.charAt(i); 9 10 if(ch=='('||ch == '{'||ch == '[') 11 { 12 stack.push(ch); 13 } 14 else 15 { 16 17 if(stack.size()==0) 18 return false; 19 char top = stack.pop(); 20 if(ch==')'&&top!='(') 21 return false; 22 else if(ch==']'&&top!='[') 23 return false; 24 else if(ch=='}'&&top!='{') 25 return false; 26 } 27 } 28 return stack.isEmpty(); 29 30 } 31 }