Valid Parentheses
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.
Solution
public class Solution {
private static class Node {
char val;
Node next;
Node(char x){
val = x;
next =null;
}
}
private static class Stack{
Node top;
int size;
public Stack(){
top = null;
size = 0;
}
public void push(Node cur){
if(size == 0) top = cur;
else{
cur.next = top;
top = cur;
}
size ++;
}
public Node pop(){
if(size == 0) return null;
Node tem= top;
top = top.next;
size --;
return tem;
}
}
public boolean isValid(String s) {
if(s == null || s.length() == 0) return true;
if(s.length() == 1) return false;
Stack stack = new Stack();
for(int i = 0; i < s.length(); i ++){
char x = s.charAt(i);
if(x == '(' || x == '[' || x == '{') stack.push(new Node(x));
else{
if(stack.size != 0){
char test = stack.pop().val;
if(x == ')' && test == '(')
continue;
else if(x == ']' && test == '[')
continue;
else if(x == '}' && test == '{')
continue;
else
return false; }
else return false;
}
}
if(stack.size == 0) return true;
return false;
}
}