Deque的使用
Stack栈的理解
Java中的Map
如果对下面的代码中有些方法不了解的地方、可以先看看上面的链接里面的内容;
从题解可以看出,后来的左括号一定要先闭合,不然不符合题意;
所以就符合了栈的先进先出的特性,故该题要用到栈的数据结构
接着核心判断语句的理解如下
首先判断录入的数据是不是左括号
如果是;把左括号都放入栈中
如果不是:就将右括号作为key,判断对应value的左括号与栈顶的左括号是否相等
如果是;就将左括号出栈;
如果不是;就判断错误;
/**
* 从题解可以看出,后来的左括号一定要先闭合,不然不符合题意;
* 所以就符合了栈的先进先出的特性,故该题要用到栈的数据结构
* 接着
* 首先判断录入的数据是不是左括号
* 如果是;把左括号都放入栈中
* 如果不是:就将右括号作为key,判断对应value的左括号与栈顶的左括号是否相等
* 如果是;就将左括号出栈;
* 如果不是;就判断错误;
*/
static class Solution{
public HashMap<Character,Character> hashMap = new HashMap<>();
public boolean isValid(String s){
if (s.length()%2!=0) {
return false;
}
//录入右括号为key,左括号为value
hashPut();
Deque<Character> deque = new LinkedList<>();
for (int i = 0; i < s.length(); i++) {
//判断是左括号、还是右括号
if (hashMap.containsKey(s.charAt(i))){
if (deque.isEmpty()||hashMap.get(s.charAt(i))!=deque.peek()){
return false;
}else {
deque.pop();
}
}else {
deque.push(s.charAt(i));
}
}
return deque.isEmpty();
}
public void hashPut(){
hashMap.put(')','(');
hashMap.put(']','[');
hashMap.put('}','{');
}
}