Solution in Java:
public class Solution {
public boolean isValid(String s) {
char[] arrayS = s.toCharArray();
Map<Character,Character> brackets = new HashMap<Character,Character>();
brackets.put('(',')');
brackets.put('[',']');
brackets.put('{','}');
Stack<Character> sStack = new Stack<Character>();
for(int i=0; i<arrayS.length; i++){
if(arrayS[i]=='('||arrayS[i]=='['||arrayS[i]=='{') sStack.push(arrayS[i]);
else{
if(!sStack.empty()){
char cur = sStack.pop();
if(brackets.get(cur)!=arrayS[i]) return false;
}
else{
return false;
}
}
}
if(sStack.empty())
return true;
return false;
}
}
Note:
Java中的Stack,Map,List等容器只能放Object,而char,int为基本类型,所以容器中不能储存,要用相应的对象Character和Integer。Map中插入元素用put(key,value),获得相应key的value用map.get(key)。如果在检查中间发现栈为空,说明括号不配对。如果在遍历结束后发现栈不是空,说明左括号有富余,也不配对。