1,相邻重复一次都不保留 azffmmzxccc 的输出结果是 azzx
public class quchong {
public static void main(String[] args) {
String a="azffmmzxccc";
char [] zz=a.toCharArray();
Stack s=new Stack();
int m=0;//标记(方便做判断)
for(int i=0;i<zz.length;i++) {
if(s.empty()) {
s.push(zz[i]);
continue;
}
if(s.peek().equals(zz[i])) {
m++;
//continue;
}else {
if(m==0) {
s.push(zz[i]);
}else{
//去除相同的元素(包括第一次出现的)(*****)
s.pop();
s.push(zz[i]);
//将标记重新改为0
m=0;
}
}
}
//最后一次的判断标记,是为了去除最后没有走的的那一部(*****这一步)
//因为判断条件只有s.peek().equals(zz[i],没有对m的约束
//如果字符串最后的一个元素与倒数第二个不相同,也不用进行这一步的判断
if(m!=0) {
s.pop();
}
System.out.println(s);
}
2,相邻重复,保留一次重复
可以去看大神的代码https://blog.csdn.net/handsome2013/article/details/80573069(此为转载地址用于交流)
注:以上只用于学习交流