首页 > 解决方案 > 如何删除部分数组中的所有 char 重复项(未排序且不应该排序)

问题描述

我正在尝试删除此部分数组中的重复项。我试图将第 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);

    }
}

电流输出:aee

标签: javaarrays

解决方案


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

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]+" ");
    }
}

推荐阅读