栈和StringBuffer的使用

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做的字符串拼接

 

(三) String底层就是用Char实现的,所以可以用 S.charAt(i) 获取该索引处的值 (注 : S代表字符串,i是索引)

 

posted @ 2021-03-09 18:00  小猫爱哭鬼  阅读(75)  评论(0编辑  收藏  举报