gpt4 book ai didi

Java 字符串操作 : Comparing adjacent Characters in Java

转载 作者:行者123 更新时间:2023-11-29 09:35:59 27 4
gpt4 key购买 nike

我有以下问题
给定一个字符串,返回一个“清理过”的字符串,其中相同的相邻字符已减少为单个字符。所以 "yyzzza" 产生 "yza"

stringClean("yyzzza") → "yza"      
stringClean("abbbcdd") → "abcd"
stringClean("Hello") → "Helo"

我正在尝试使用我的代码输入 stringClean("abbbcdd") → "abcd"

我的代码在下面。我在进行相邻字符比较后得到了部分附加字符串,因此从现在开始我得到了附加的 stringBuilder "sb=abc" 这不是正确的输出我应该得到输出为 "abcd",

class cleanString{

public static String stringClean(String str){
int startIndex = str.indexOf(str);
char startChar = '\u0000';
char adjacentChar = '\u0000';
System.out.println("startIndex-->" + startIndex);
final StringBuilder sb = new StringBuilder();

for(startIndex = 0; startIndex < str.length(); startIndex += 1){
startChar = str.charAt(startIndex);
System.out.println("startIndex ::" + startIndex);
System.out.println("startChar ::" + startChar);

final int adjacentPosition = startIndex + 1;
System.out.println("adjacentPosition ::" + adjacentPosition);
if(adjacentPosition != str.length()){
adjacentChar = str.charAt(adjacentPosition);
System.out.println("adjacentChar ::" + adjacentChar);
}
if(startChar == adjacentChar){
System.out.println("startChar ::" + startChar);
System.out.println("adjacentChar::" + adjacentChar);

System.out.println("Before Substring string --->" + str);
str = str.substring(1);
startIndex--;
System.out.println("After Substring string --->" + str);
System.out.println("IndexOf check ---->"
+ sb.toString().indexOf(startChar));
if(sb.toString().indexOf(startChar) != -1){
sb.append(adjacentChar);
System.out.println("Appended String in if part-->"
+ sb.toString());
}
} else{
str = str.substring(1);
startIndex--;
sb.append(startChar);
System.out.println("Appended String --->" + sb.toString());
}
}// end of for loop
return sb.toString();
}

//im getting output as abc...which is partial appended string
public static void main(String ...args){
String outputCleanString=new cleanString().stringClean("abbbcdd");
System.out.println("Cleaned String --->"+outputCleanString);
}

}

*观察:*在我得到附加字符串“abc”之后,然后当我开始比较最后一组字符“dd”时,我在该部分遇到了问题。

最佳答案

如果可以接受基于正则表达式的解决方案,您可以:

str = str.replaceAll("(.)\\1+","$1");

Ideone Link

关于Java 字符串操作 : Comparing adjacent Characters in Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5388878/

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