public static String st(String S) {
Stack<Object> stack = new Stack<>(); //新建一个栈,对于不能有重复项的题目优先考虑用栈
for (int i = 0; i < S.length(); i++) {
if (stack.isEmpty() || !stack.peek().equals(S.charAt(i))) {
stack.push(S.charAt(i));
} else {
stack.pop();
}
}
StringBuffer s = new StringBuffer(); //字符串拼接用StringBuffer优于String
for (Object o : stack) {
s.append(o);
}
return s.toString();
}
这个是力扣上面的1047题,里面是对栈和StringBuffer的使用
(一) 对于不能有重复项的题目优先考虑用栈,栈有先进后出的特点,一般使用的有四个关于栈的方法
Stack<Object> stack = new Stack<>(); 这个是在java里面新建一个栈
stack.push() 往栈里面添加一个元素
stack.pop() 获取并删除栈顶的一个元素
stack.peek() 读取栈顶的一个元素,是读取,不是取出来
stack.isEmpty() 判断是否为栈空
(二) 在做是字符串的拼接的时候,StringBuffer的效率明显高于String,下图第一个是用StringBuffer做的字符串拼接,
第二个是用的String做的字符串拼接
原文:https://www.cnblogs.com/wuhuac/p/14507090.html