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.
考察棧的運用
Stack:
1-->public Stack()創建一個空堆棧
Stack<Character> sk = new Stack<Character>();
2-->public boolean empty()測試堆棧是否爲空;
sk.empty(); 爲空返回true;
3-->public E pop()移除堆棧頂部的對象,並作爲此函數的值返回該對象。
sk.pop();
4-->public E push(E item)把項壓入堆棧頂部
sk.push();
5-->public E peek()查看堆棧頂部的對象,但不從堆棧中移除它。
sk.peek();
package leetcode;
import java.util.Stack;
public class ValidParentheses {
public static boolean isValid(String s) {
boolean ans = true;
Stack<Character> sk = new Stack<Character>();
if (s == "" || s.length() == 0) return ans;
if (s.length() % 2 != 0) return false;
char[] chars = s.toCharArray();
for (int i = 0; i<chars.length; i++){
if (chars[i] == '{' || chars[i] == '[' || chars[i] == '('){
sk.push(chars[i]);
}
if (chars[i] == '}' ){
if (sk.empty()){
ans = false;
break;
}
if (sk.pop() == '{'){
ans = true;
}else {
ans = false;
break;
}
}
if (chars[i] == ']' ){
if (sk.empty()){
ans = false;
break;
}
if (sk.pop() == '['){
ans = true;
}else {
ans = false;
break;
}
}
if (chars[i] == ')' ){
if (sk.empty()){
ans = false;
break;
}
if (sk.pop() == '('){
ans = true;
}else {
ans = false;
break;
}
}
}
if (!sk.empty()) ans = false;
return ans;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(isValid("[["));
}
}