package com.test;
/**
* 链接:https://www.nowcoder.com/questionTerminal/42852fd7045c442192fa89404ab42e92?f=discussion
* 来源:牛客网
*
* Question:
* 1. 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello
* 2. 两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello
* 3. 上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBCC都是错误拼写,应该优先考虑修复AABB,结果为AABCC
*
*
* 输入:
* 2
* hellllo
* woooow
*
* 输出:
* hello
* woow
*
*
* Dtae:2020-3-24 21:42:00
*/
import java.util.Scanner;
public class test2 {
public String[] repair(String[] strlist,int length){
String[] resultlist=new String[length];
for(int i=0;i<length;i++){
String str=strlist[i];
int state=0; //初始状态0
char cur; //当前字符串
char last=str.charAt(0); //初始化第一个字符串
String ans=""; //连接处理后的字符
ans+=last; //初始化
for(int j=1;j<str.length();++j) {
cur = str.charAt(j);
switch (state) {
case 0: {
if (cur == last) {
state = 1; //AA情况
} else {
state = 0;
}
break;
}
case 1: {
if (cur == last) {
continue; //AAA情况
} else {
state = 2;
//AAB情况
}
break;
}
case 2: {
if (cur == last) {
continue;
} else {
state = 0;
}
break;
}
default:
break;
}
ans = ans + cur;
last = cur;
}
resultlist[i]=ans;
}
return resultlist;
}
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
String[] strlist=new String[n];
for(int i=0;i<n;i++){
strlist[i]=scanner.next();
}
test2 t=new test2();
String[] resultList=t.repair(strlist,n);
for(int i=0;i<n;i++){
System.out.println(resultList[i]);
}
}
}
牛客网字节跳动——修改拼写错误
最新推荐文章于 2023-02-10 12:40:58 发布