gpt4 book ai didi

java - 更改字符串中重复的字母

转载 作者:行者123 更新时间:2023-11-30 07:31:59 24 4
gpt4 key购买 nike

我必须编写一种方法,无论何时两个相同的字母彼此相邻,这两个字母都将被单词中的下一个字母替换。如果单词的最后两个字母相同,则这些字母相同应该被删除。例如“wheel”应该变成“whll”。然而,新的重复字母不应发生任何变化。例如,“keeper”应该打印“kppper”

这是我的尝试:

public String change(String s){
if(s.length()>=2&&s.substring(s.length()-2,s.length()-1).equals(s.substring(s.length()-1)))
s=s.substring(0,s.length()-2);
if(s.length()<2)
return s;
String f="";
for(int i=0; i<s.length(); i++){
if(i+1<s.length()-1&&s.substring(i,i+1).equals(s.substring(i+1,i+2))){
if(s.length()<4){
f=f+s.substring(s.length()-i)+s.substring(s.length()-1);
i=i+2;}
else{f=f+s.substring(i+2,i+3)+s.substring(i+2,i+3);
i=i+2;}
}
else {
f=f+s.substring(i,i+1);
}

}
if(f.length()<s.length())
f=f+s.substring(s.length()-1);
return f;
}

但是,只有当单词在非重复字母之后不继续时,该方法才有效。例如“保持”、“轮子”。如果我尝试添加结尾或更多重复的字母,它不会给出正确的输出。 “foodloop”打印“fddlppp”,缺少一个“d”,“missing”打印“miiiingg”缺少一个“i”和一个额外的“g”

最佳答案

您的代码应如下所示:

public static String change(String s){
if(s.length()>=2&&s.substring(s.length()-2,s.length()-1).equals(s.substring(s.length()-1)))
s=s.substring(0,s.length()-2);
if(s.length()<2)
return s;
String f="";

for(int i=0; i<s.length(); i++){
if((i+1<s.length()-1)&& (s.substring(i,i+1).equals(s.substring(i+1,i+2)))){
if(s.length()<4){
f=f+s.substring(s.length()-i)+s.substring(s.length()-1);
i=i+2;
}
else{
f=f+s.substring(i+2,i+3)+s.substring(i+2,i+3);
i=i+1;
}
}
else {
f=f+s.substring(i,i+1);
}

}
if(f.length()<s.length())
f=f+s.substring(s.length()-1);
return f;
}

在这里我更改了您的代码:

   else{
f=f+s.substring(i+2,i+3)+s.substring(i+2,i+3);
i=i+2;
}

至:

else{
f=f+s.substring(i+2,i+3)+s.substring(i+2,i+3);
i=i+1;
}

关于java - 更改字符串中重复的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35977074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com