消除字符串中相邻的相同字符-Java

Java实现:消除字符串相邻重复字符
该博客介绍了一个字符串处理问题,要求消除相邻的相同字符。给出详细输入输出描述及样例,如输入字符串'abccbd',处理后变为'ad'。博主提供了算法思路,使用两个栈A和B进行比较和处理,确保相邻重复字符被消除。

题目描述

给定一个字符串,从左到右扫描,如存在两个或两个以上的相同字符靠在一起,则消除这些字符。对每次消除后剩下的字符串,继续应用上述规则,直到不能消除为止。

输入

任意字符串

输出

消除后的字符串

样例

输入
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]);
			}
		}
	}
		
	

	
		

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值