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.
public class Solution { public boolean isValid(String s) { // Start typing your Java solution below // DO NOT write main() function Stack<Character> stack = new Stack<Character>(); for(int i = 0 ; i< s.length(); i++){ char c = s.charAt(i); if(c == '(' || c == '[' || c == '{'){ stack.push(c); } else{ if(stack.empty()){ return false; } char top = stack.pop(); if(c== ')'){ if(top != '(')return false; } if(c == ']'){ if(top != '[')return false; } if(c == '}'){ if(top != '{')return false; } } } return stack.empty(); } }
leaned: stack push and pop from beginning 2) use char c to store poped value
public class Solution { public boolean isValid(String s) { char[] arrays = s.toCharArray(); HashMap<Character,Character> map = new HashMap<Character,Character>(); map.put('(',')'); map.put('[',']'); map.put('{','}'); Stack<Character> stack = new Stack<Character>(); for(char c:arrays){ if(map.keySet().contains(c)){ stack.push(c); } else if(map.values().contains(c)){ if(!stack.isEmpty()&& map.get(stack.peek()) == c){ stack.pop(); } else{ return false; } } } return stack.isEmpty(); } }