前言:为了后续的实习面试,开始疯狂刷题,非常欢迎志同道合的朋友一起交流。因为时间比较紧张,目前的规划是先过一遍,写出能想到的最优算法,第二遍再考虑最优或者较优的方法。如有错误欢迎指正。博主首发CSDN,mcf171专栏。
博客链接:mcf171的博客
——————————————————————————————
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.
这个题没啥好说的,用一个堆实现即可。Your runtime beats 8.71% of java submissions.
public class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
Map<Character,Character> bracket2bracket = new HashMap<Character,Character>();
bracket2bracket.put(')','(');
bracket2bracket.put(']','[');
bracket2bracket.put('}','{');
for(int i = 0 ; i < s.length(); i++){
Character mapBracket = bracket2bracket.get(s.charAt(i));
if(mapBracket != null){
if(stack.empty()) return false;
char topChar = stack.pop();
if(topChar != mapBracket) return false;
}else{
stack.push(s.charAt(i));
}
}
if(stack.empty()) return true;
else return false;
}
}