gpt4 book ai didi

java - 如何删除字符串中的重复字符?

转载 作者:行者123 更新时间:2023-12-01 16:56:55 25 4
gpt4 key购买 nike

我有一个方法,应该删除其中传递的字符串中的所有重复项。我可以打印重复项,如何在原始字符串中删除它们?假设“miami”返回时需要变为“mia”。谢谢。

  public static String removeDups( String str1){

char[] str = str1.toCharArray();
if (str == null) return null;
int len = str.length;
if (len < 2) return new String(str);

char[] newStr = new char[len+1];
int copyLength = 0;

for ( int i = 1 ; i < len; i++){

for( int j=0; j< i; j++){

if ( str[i] == str[j]){
System.out.println(" str[i] == str[j] = "+ str[i] + " , "+str[j]);
break;
}

}

}

return new String(str);
}

最佳答案

我发现使用 StringBuilder 比使用 String 更容易

编辑

这也可以通过 StringBuilderregex 的组合来完成

正则表达式模式分割:

 (.)    --> matches any character and puts in group 1. 
?= --> this is called a positive lookahead.
?=.*\\1 --> positive lookahead of zero or more characters for the first group

代码示例:

public static void main(String[] args) throws Exception {
System.out.println(removeDuplicates("miamimiamimiami"));
System.out.println(removeDuplicatesRegex("miamimiamimiami"));
}

public static String removeDuplicates(String input){
StringBuilder data = new StringBuilder(input);
for (int i = 0; i < data.length(); i++) {
String character = String.valueOf(data.charAt(i));
int dupIndex = data.indexOf(character, i + 1);
while (dupIndex != -1) {
data.deleteCharAt(dupIndex);
dupIndex = data.indexOf(character, i + 1);
}
}

return data.toString();
}

public static String removeDuplicatesRegex(String input) {

return new StringBuilder(
new StringBuilder(input)
.reverse()
.toString()
.replaceAll("(.)(?=.*\\1)", ""))
.reverse().toString();
}

结果:

mia
mia

关于java - 如何删除字符串中的重复字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31387014/

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