Skip to content

Instantly share code, notes, and snippets.

@eduzol
Created March 1, 2017 09:26
Show Gist options
  • Save eduzol/fc295237763d486e6cb2aa640af6ab94 to your computer and use it in GitHub Desktop.
Save eduzol/fc295237763d486e6cb2aa640af6ab94 to your computer and use it in GitHub Desktop.
package com.zola.leetcode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Stack;
public class Solution20 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String validStr = "((( { 45} )))";
System.out.println(new Solution20().isValid(validStr));
String invalidStr = "))4a(){}";
System.out.println(new Solution20().isValid(invalidStr));
}
public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
List<Character> targets = Arrays.asList(new Character[]{'(',')','[',']','{','}'});
for ( int i = 0 ; i < s.length() ; i++){
Character element = s.charAt(i);
if (!targets.contains(element)){
continue;
}
boolean isOpenCharacter = element.equals('(') || element.equals('{') || element.equals('[');
boolean isValidClosingParenthesis = element.equals(')') && !stack.isEmpty() && stack.peek()=='(' ;
boolean isValidClosingSquares = element.equals(']') && !stack.isEmpty() && stack.peek()=='[' ;
boolean isValidClosingBrackets = element.equals('}')&& !stack.isEmpty() && stack.peek()=='{' ;
if ( isOpenCharacter ){
stack.push(element);
}else if (isValidClosingParenthesis ){
stack.pop();
}else if(isValidClosingSquares ){
stack.pop();
}else if(isValidClosingBrackets){
stack.pop();
}else {
return false;
}
}
return stack.isEmpty();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment