Java 如何删除字符串数组中的重复字符串? 公共静态字符串[]字典(字符串s){ 整数计数=0; 字符串[]ans=句子; int size=ans.length; 对于(int i=0;i
我必须找到重复的字符串,并将它们从按字典顺序排序的字符串数组中删除。一种简单的方法是将它们放入一个集合中Java 如何删除字符串数组中的重复字符串? 公共静态字符串[]字典(字符串s){ 整数计数=0; 字符串[]ans=句子; int size=ans.length; 对于(int i=0;i,java,string,Java,String,我必须找到重复的字符串,并将它们从按字典顺序排序的字符串数组中删除。一种简单的方法是将它们放入一个集合中 public static String[] dictionary(String s){ int count=0; String[] ans = sentence(s); int size = ans.length; for (int i = 0; i < size - 1; i++) { for (int j = i + 1; j &l
public static String[] dictionary(String s){
int count=0;
String[] ans = sentence(s);
int size = ans.length;
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < ans.length; j++) {
if (ans[i].compareTo(ans[j]) > 0) {
String temp = ans[i];
ans[i] = ans[j];
ans[j] = temp;
}
}
}
for (int i = 0; i < ans.length; i++) {
ans[i] = [i].to lowerCase);
}
return ans;
}
如果不想使用集合,可以这样做。而且它不需要排序数组。它的工作原理如下。注意:这会更改传入的数组
null
则继续下一个元素null
并增加删除的
String[] result = setsHaveNoDuplicates.toArray(new String[0]);
因为您知道传入数组已排序,所以可以获取当前元素并将下一个元素与当前元素进行比较。如果等于,则跳过它,否则将此元素添加到结果中,并更改为当前。像这样的
String[] result = Arrays.stream(arr).distinct().toArray(String[]::new);
公共静态字符串[]字典(字符串s){
字符串[]ans=句子;
if(ans==null | | ans.length==0){
返回ans;
}
列表结果=新建ArrayList();
串电流=ans[0];
结果。添加(当前);
for(int i=1;i
使用集合,例如Set nonDuplicate=newlinkedhashset(Arrayas.asList(句子))你的问题是什么?这段代码是否有效?我的问题是如何删除字符串数组中的重复字符串这似乎是一个学习练习,因此使用集合可能不是解决问题的方法(我假设不允许)。由于数组已经排序,您基本上需要删除与上次检查的字符串完全相同的任何字符串,因此请跟踪该字符串并进行比较。你如何处理数组将取决于你是否被允许创建一个副本,或者你必须在适当的位置(即在同一个数组中)创建副本。是的,你是对的,我已经学习了集合,并且它被允许创建副本。你有没有一种使用for循环的方法?@davidkokiashvili看到我关于循环解决方案的答案了吗
public static String[] removeDups(String[] arr) {
// keep track of removed values
int removed = 0;
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
if (arr[i] == null) {
// skip this entry and go to next
break;
}
if (arr[i].equals(arr[j])) {
// designate as removed
arr[j] = null;
removed++;
}
}
}
// copy remaining items to new array and return.
String[] result = new String[arr.length-removed];
int k = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] != null) {
result[k++] = arr[i];
}
}
return result;
}
String[] result = Arrays.stream(arr).distinct().toArray(String[]::new);
public static String[] dictionary(String s){
String[] ans = sentence(s);
if (ans == null || ans.length == 0) {
return ans;
}
List<String> result = new ArrayList<String>();
String current = ans[0];
result.add(current);
for (int i= 1; i < ans.length; i++) {
if (!ans[i].equals(current)) {
result.add(ans[i]);
current = ans[i];
}
}
return result.toArray(new String[0]);
}