题目描述
给定一个字符串,从左到右扫描,如存在两个或两个以上的相同字符靠在一起,则消除这些字符。对每次消除后剩下的字符串,继续应用上述规则,直到不能消除为止。
输入
任意字符串
输出
消除后的字符串
样例
输入
abccbd
输出
ad
输入
snggnnqp
输出
sqp
代码
算法描述:准备一个栈A,将数据存入栈A之前,比较当前数据和栈顶元素是否相等,相等则将数据出栈,并且将出栈数据存到另一个栈B中,标记当前顺序;如果不等,则比较当前数据是否与另一个栈B顶的元素是否相等,是否有标记,相等则不入栈,不等,则入栈A。
import java.util.Scanner;
public class SomeTest {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String str=sc.next();
char [] result=new char[2000];
char [] tmp=new char[2000];
int head1=-1,head2=-1;
boolean flag=false;
for (int i=0;i<str.length();i++){
if (head1>=0){
if (result[head1]==str.charAt(i)){
head1--;
tmp[++head2]=str.charAt(i);
flag=true;
}else{
if (head2>=0&&flag){
if(tmp[head2]!=str.charAt(i)){
result[++head1]=str.charAt(i);
flag=false;
}
}
else{
result[++head1]=str.charAt(i);
flag=false;
}
}
}
else{
result[++head1]=str.charAt(i);
}
}
for (int i=0;i<=head1;i++){
System.out.print(result[i]);
}
}
}
}
Java实现:消除字符串相邻重复字符
该博客介绍了一个字符串处理问题,要求消除相邻的相同字符。给出详细输入输出描述及样例,如输入字符串'abccbd',处理后变为'ad'。博主提供了算法思路,使用两个栈A和B进行比较和处理,确保相邻重复字符被消除。
3979

被折叠的 条评论
为什么被折叠?



