解题思路:分析题意,列出出现所有情况。这里采用了一个列表记录检索的元素,当列表为空,添加指针所指元素;当列表只存在一个元素时,比较元素是否相同,若相同则添加,不同则删除列表中的第一个元素;当列表存在两个元素时,比较元素是否相同,若相同则删除字符串中指针所指元素,不同则添加至列表;当列表存在三个元素时,若元素与列表最后一个元素相同则删除字符串中指针所指元素,不同则删除此时列表中所有的元素并添加该元素。直至遍历完字符串。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int N=scan.nextInt();
List<stringbuilder> list=new ArrayList<>();
for(int i=0;i<N;i++){
StringBuilder str=new StringBuilder();
String STR=new String();
STR=scan.next();
str.append(STR);
list.add(str);
}
StringBuilder str=new StringBuilder();
for(int i=0;i<N;i++) {
str=list.get(i);
int j=0;
//char a=' ';
List<character> slist=new LinkedList<>();
while(j<str.length()) {
char a=str.charAt(j);
if(slist.isEmpty()) {
slist.add(0, a);
j++;
}
else if(slist.size()==1&&slist.get(0)==a) {
slist.add(1, a);
j++;
}
else if(slist.size()==2&&slist.get(1)==a) {
str.deleteCharAt(j);
}
else if(slist.size()==2&&slist.get(1)!=a) {
slist.add(a);
j++;
}
else if(slist.size()==3&&slist.get(2)==a) {
str.deleteCharAt(j);
}
else if(slist.size()==3&&slist.get(2)!=a){
slist.clear();
slist.add(a);
j++;
}
else {
slist.clear();
slist.add(a);
j++;
}
}
System.out.println(str);
}
}
}</character></stringbuilder>