对于括号类的问题要考虑到用栈来实现,现常用Deque来实现栈的操作而不使用Stack来定义栈。
双端队列队列的实现有LinkedList和ArrayDeque两种方式,
arrayDeque是数组结构,插入元素不能为null
LinkList是链表结构,常用无法确定数据量时有更好表现
常用方法
add()
addFirst()
addLast()
contains()
getFirst()
getLast()
pop()
....
更多详细方法见https://blog.youkuaiyun.com/qq_37654497/article/details/112100906
class Solution {
public String reverseParentheses(String s) {
StringBuffer str = new StringBuffer();
Deque<String> stack = new LinkedList<String>();
for(int i = 0;i < s.length();i++){
if(s.charAt(i) == '('){
stack.push(str.toString());
str.setLength(0);
}else if(s.charAt(i) == ')'){
str.reverse();
str.insert(0,stack.pop());
}else{
str.append(s.charAt(i));
}
}
return str.toString();
}
}