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

题目描述

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

输入

任意字符串

输出

消除后的字符串

样例

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

	
		

}

你可能感兴趣的:(算法)