我试图迭代一个字符串,以删除重复字符.
例如,字符串aabbccdef
应该成为abcdef
,字符串abcdabcd
应该成为abcd
这是我到目前为止:
public class test {
public static void main(String[] args) {
String input = new String("abbc");
String output = new String();
for (int i = 0; i < input.length(); i++) {
for (int j = 0; j < output.length(); j++) {
if (input.charAt(i) != output.charAt(j)) {
output = output + input.charAt(i);
}
}
}
System.out.println(output);
}
}
Run Code Online (Sandbox Code Playgroud)
做这个的最好方式是什么?
Dav*_*ave 43
将字符串转换为char数组,并将其存储在一个LinkedHashSet
.这将保留您的订购,并删除重复.就像是:
String string = "aabbccdefatafaz";
char[] chars = string.toCharArray();
Set<Character> charSet = new LinkedHashSet<Character>();
for (char c : chars) {
charSet.add(c);
}
StringBuilder sb = new StringBuilder();
for (Character character : charSet) {
sb.append(character);
}
System.out.println(sb.toString());
Run Code Online (Sandbox Code Playgroud)
Fun*_*hor 13
使用Stream可以很容易。
noDuplicates = Arrays.asList(myString.split(""))
.stream()
.distinct()
.collect(Collectors.joining());
Run Code Online (Sandbox Code Playgroud)
以下是有关 Stream 的更多文档以及您可以使用它执行的所有操作:https : //docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html
“描述”部分对 Streams 的好处非常有指导意义。
小智 6
试试这个简单的解决方案:
public String removeDuplicates(String input){
String result = "";
for (int i = 0; i < input.length(); i++) {
if(!result.contains(String.valueOf(input.charAt(i)))) {
result += String.valueOf(input.charAt(i));
}
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
我会使用LinkedHashSet的帮助.删除重复(因为我们使用Set,维护顺序,因为我们使用链表impl).这是一种肮脏的解决方案.甚至可能有更好的方法.
String s="aabbccdef";
Set<Character> set=new LinkedHashSet<Character>();
for(char c:s.toCharArray())
{
set.add(Character.valueOf(c));
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
165022 次 |
最近记录: |