gpt4 book ai didi

java - 如何删除部分数组中的所有字符重复项(未排序且不应该排序)

转载 作者:行者123 更新时间:2023-12-01 19:23:07 26 4
gpt4 key购买 nike

我正在尝试删除此部分数组中的重复项。我尝试将第 i 个元素与每个元素进行比较,但出了问题。

public class deleteRepeats{
public static void deleteRepeats(char[] c, int size){
int i,j;
char temp;
char[] newArray = new char[size];
for(i=0;i<size;i++){
newArray[i] = c[i];
}
for(i=0;i<size;i++){
for(j=0;j<size;j++){
if(newArray[i]==newArray[j]&&i!=j){
temp = newArray[j];
for(int k=j+1;k<size;k++){
newArray[k-1] = newArray[k];
newArray[size-1] = temp;
size-=1;
}
}
}
}
for(i=0;i<size;i++){
System.out.print(newArray[i]+" ");
}
}
public static void main(String[] args){
char[] a = new char[10];
a[0] = 'a';
a[1] = 'b';
a[2] = 'a';
a[3] = 'e';
a[4] = 'b';
a[5] = 'q';
deleteRepeats(a, 6);

}
}

当前输出:a e e

最佳答案

对于像这样的简单问题来说,您的代码太复杂了。为了更快地使用两个循环,像这样

public static void deleteRepeats2(char[] c, int size){
int i, j, k = 0;
char[] newArray = new char[size];

for(i=0; i < size; i++){
for(j = 0; j < i; j++){
if (c[j] == c[i])
break;
}

if (j == i)
newArray[k++] = c[i];
}

for(i=0; i < k; i++){
System.out.print(newArray[i]+" ");
}
}

或者如果您想保留您的代码

public static void deleteRepeats(char[] c, int size){
int i,j;
char temp;
char[] newArray = new char[size];
for(i=0; i < size; i++){
newArray[i] = c[i];
}
for(i = 0; i < size; i++){
for(j = i + 1; j < size; j++){
if(newArray[i] == newArray[j] && i != j){
temp = newArray[j];
for(int k = j; k < size - 1; k++){
newArray[k] = newArray[k + 1];
}
newArray[size-1] = temp;
}
}
}
for(i=0;i<size;i++){
System.out.print(newArray[i]+" ");
}
}

关于java - 如何删除部分数组中的所有字符重复项(未排序且不应该排序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59338036/

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