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.
解题思路:
这个想到了以前用栈来进行判断,就是当是左括号的时候就push,当时右括号的时候就pop,比较pop的值是不是想要的结果,如果不是就返回错误。最后检查遍历结束之后的栈是不是空栈。 网上看到了一个不错的做法,就是当遇到左括号的时候就把对应的右括号push进去,这样pop的时候直接看是不是对应的右括号就可以了。代码会简单很多。
[java] view plain copy print ? public class Solution { public boolean isValid(String s) { Stack<Character> st = new Stack<Character>(); for(int i = 0;i<s.length();i++) { char cs = s.charAt(i); if(cs == '(') st.push(')'); else if(cs == '[') st.push(']'); else if(cs == '{') st.push('}'); else if(st.isEmpty() || st.pop() != cs) return false; } if(st.isEmpty()) return true; else return false; } } public class Solution { public boolean isValid(String s) { Stack<Character> st = new Stack<Character>(); for(int i = 0;i<s.length();i++) { char cs = s.charAt(i); if(cs == '(') st.push(')'); else if(cs == '[') st.push(']'); else if(cs == '{') st.push('}'); else if(st.isEmpty() || st.pop() != cs) return false; } if(st.isEmpty()) return true; else return false; } }
