天外有天,人外有人,集合之外还有集合
Deque是一个双队列,拥有队列和栈两种特性,也就是可以先进先出,也可以先进后出,主要实现类是ArrayDeque和LinkedList。
给定一个括号,"(",")","{","}","[","]"的字符串,判断字符串是否有效。
条件:1 左括号必须使用相同类型的右括号闭合 2 做括号必须以正确的顺序闭合
1、输入:“()”, 输出:true2、输入:“{}”, 输出:true
3、输入:“({})”, 输出:正确
4、输入:“([}]”, 输出:错误
5、输入:“[}”, 输出:错误
代码:
@Testpublic void test1(){
String s = "()";
Deque<Character> stack = new ArrayDeque<>();
for (int i = 0;i<s.length();i++){
if (s.charAt(i) == "(" || s.charAt(i) == "{" || s.charAt(i) == "["){
stack.push(s.charAt(i));
} else {
if (stack.isEmpty()){
log.info("false");
} else if (stack.peek() == "(" && s.charAt(i) != ")"){
log.info("false");
} else if (stack.peek() == "{" && s.charAt(i) != "}"){
log.info("false");
} else if (stack.peek() == "[" && s.charAt(i) != "]"){
log.info("false");
}
stack.pop();
}
}
if (stack.isEmpty()){
log.info("success");
} else {
log.info("false");
}
}
这里使用了Deque的栈特性,先进后出。
添加元素:push:向栈中押入元素,头元素
删除元素:
pop:删除栈中头个元素
获取元素:
peek:获取栈中头元素,不删除
如果使用队列特性,相关代码如下:
添加元素:addFirst(): 向队头插入元素,如果元素为空,则发生NPE
addLast(): 向队尾插入元素,如果为空,则发生NPE
offerFirst(): 向队头插入元素,如果插入成功返回true,否则返回false
offerLast(): 向队尾插入元素,如果插入成功返回true,否则返回false
删除元素
removeFirst(): 返回并移除队头元素,如果该元素是null,则发生NoSuchElementException
removeLast(): 返回并移除队尾元素,如果该元素是null,则发生NoSuchElementException
pollFirst(): 返回并移除队头元素,如果队列无元素,则返回null
pollLast(): 返回并移除队尾元素,如果队列无元素,则返回null
获取元素
getFirst(): 获取队头元素但不移除,如果队列无元素,则发生NoSuchElementException
getLast(): 获取队尾元素但不移除,如果队列无元素,则发生NoSuchElementException
peekFirst(): 获取队头元素但不移除,如果队列无元素,则返回null
peekLast(): 获取队尾元素但不移除,如果队列无元素,则返回null
以上是 天外有天,人外有人,集合之外还有集合 的全部内容, 来源链接: utcz.com/z/511282.html