给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
class Solution {
public boolean isValid(String s) {
//假如长度是1或者不为偶数
if(s.length()<2||s.length()%2!=0){
if(s.isEmpty()){
return true;
}
else{
return false;
}
}
int count = 0;
int length = s.length();
//循环替换,最大次数为s.length()/2
while(count<length/2){
s = s.replace("{}","").replace("[]","").replace("()","");
count++;
}
//假如循环替换完,还有值,那么肯定就不是对称结构
if(s.length()>0){
return false;
}
else{
return true;
}
}
}
class Solution {
public boolean isValid(String s) {
Map<Character,Character> map = new HashMap<>();
map.put(')', '(');
map.put('}', '{');
map.put(']', '[');
Stack<Character> stack = new Stack<Character>();
char[] chars = s.toCharArray();
for(char c : chars){
if('('==c||'{'==c||'['==c){
stack.push(c);
}else if(stack.isEmpty() ||stack.pop().charValue() != map.get(c)){
return false;
}
}
return stack.isEmpty();
}
}