请编写一个函数来检查输入字符串是否包含括号
是常规的。如果是,则返回true,否则返回false。
/*For example:
"()" => true
")(()))" => false
"(" => false
"(())((()())())" => true
输入字符串的长度将为0<=input.length<=100
输入字符串可能包含所有ascii字符,而不仅仅是“(”and“)”。
此外,它可以是空的或没有括号*/
static boolean isMatch(String s){
if(s == null){
return false;
}
if(!s.contains("(")&& !s.contains(")")){
return false;
}
if(!(s.length()>=0 && s.length()<=100)){
return false;
}
//定义左右括号的对应关系
Map<Character,Character> bracket = new HashMap<>();
bracket.put(')','(');
Stack stack = new Stack();
for(int i = 0; i < s.length(); i++){
Character temp = s.charAt(i);//先转换成字符
//是否为左括号
if(bracket.containsValue(temp)){
stack.push(temp);
//是否为右括号
}else if(bracket.containsKey(temp)){
if(stack.isEmpty()){
return false;
}
//若左右括号匹配
if(stack.peek() == bracket.get(temp)){
stack.pop();
}
else{
return false;
}
}
}
return stack.isEmpty()? true: false;
}