简单题第六题有效的括号
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
栈
public class A{
public boolean isValid(String s){
//首先需要排除掉 单数长度的值
int n = s.length();
if(n%2==1){
return false;
}
//将数据存入map
Map<Character,Character> map = new HashMap<>(){{;
put(")","(");
put("}","{");
put("]","[");}};
//创建栈
Deque<Character> stack = new LinkedList<>();
for(int i = 0; i < n; i++){
//获取字符第i位
char ch = s.charAt(i);
//并且如果 map中存在
if(map.containsKey(ch)){
//排除 stack中为空 或者获取的栈顶元素,不等于当前的这个字符
if(stack.isEmpty()||stack.peek()!=map.get(ch)){
return false;
}
//如果有一样的值 就弹出
stack.pop();
}else {
//否则先压入栈中
stack.push(ch);
}
}
//全部走完 如果有值就位false
return stack.isEmpty();
}
}
另一种做法是
把map作为一个辅助函数,变成switch的形式