標籤:style blog color os io for
Given a string containing just the characters ‘(‘, ‘)‘, ‘{‘, ‘}‘, ‘[‘ and ‘]‘, determine if the input string is valid.
The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.
題解:典型的棧的應用。遇到"({["中的一種就壓棧,遇到")}]"中的一種就和棧頂元素比較,如果匹配,就繼續迴圈,否則返回false。
代碼如下:
1 public class Solution { 2 public boolean isEqual(char a,char b){ 3 return (a == ‘(‘ && b ==‘)‘)||(a == ‘[‘ && b ==‘]‘)||(a == ‘{‘ && b == ‘}‘); 4 } 5 public boolean isValid(String s) { 6 if(s == null || s.length() == 0) 7 return true; 8 Stack<Character> stack = new Stack<Character>(); 9 10 for(int i = 0;i < s.length();i++){11 if("({[".contains(String.valueOf(s.charAt(i))))12 stack.push(s.charAt(i));13 else {14 if(stack.isEmpty() || !isEqual(stack.peek(),s.charAt(i)))15 return false;16 else17 stack.pop();18 }19 }20 return stack.isEmpty();21 }22 }