删除两个字符阵列之间的公共字符

时间:2018-06-29 15:07:13

标签: java arrays

这是一个类,因此我们有一些非常特殊的约束。 我们不能使用ArrayList,并且必须对数组进行操作。

假设我有两个数组:

char[] firstArray = new char[]{'a','b'};
char[] secondArray = new char[]{'b','b','c',};

我想将数组返回为:

 firstArray = [a];
 secondArray = [b,c];

请注意,secondArray仍返回char'b',因为它包含两个,但与firstArray共享一个。

我该怎么做? 我对编码很陌生,所以一种解释就是赞赏 谢谢

2 个答案:

答案 0 :(得分:0)

您应该做的第一件事是使用嵌套循环(2个级别)遍历数组以查看它们是否重复。当您遇到重复项时,请增加一个计数器,然后将元素更改为要用作标志的某个字符,以便在结果中不使用该字符。

完成此操作后,您可以根据计数器重新创建比原始数组小的数组

char[] newFirstArray = new char[firstArray.length - counter];
char[] newSecondArray = new char[secondArray.length - counter];

然后遍历原始数组,并将其余的好字符复制到新数组中。

答案 1 :(得分:-1)

我创建了一个对您来说有些麻烦的函数,但是您可能会很容易理解,因此您应该导入import java.util.*;才能使用它:

功能:-

ArrayList<char[]> results(char[] a, char[] b) {
    ArrayList<Character> res1 = new ArrayList<>();
    ArrayList<Character> res2 = new ArrayList<>();

    for (int i = 0; i < a.length; i++) {
        res1.add(a[i]);
    }

    for (int i = 0; i < b.length; i++) {
        res2.add(b[i]);
    }

    ArrayList<Integer> a_commons = new ArrayList<>();
    ArrayList<Integer> b_commons = new ArrayList<>();

    for (int i = 0; i < a.length; i++) {
        for (int j = 0; j < b.length; j++) {
            if (res1.get(i).equals(res2.get(j))) {
                a_commons.add(i);
                b_commons.add(j);
                break;
            }
        }
    }

    Collections.sort(a_commons, Collections.reverseOrder());
    Collections.sort(b_commons, Collections.reverseOrder());

    for (int common_number : a_commons) {
        res1.remove(common_number);
    }

    for (int common_number : b_commons) {
        res2.remove(common_number);
    }

    char[] a_res = new char[res1.size()];
    char[] b_res = new char[res2.size()];

    for (int i = 0; i < res1.size(); i++) {
        a_res[i] = res1.get(i);
    }

    for (int i = 0; i < res2.size(); i++) {
        b_res[i] = res2.get(i);
    }

    ArrayList<char[]> result = new ArrayList<>();
    result.add(a_res);
    result.add(b_res);
    return result;
}

使用它:-

char[] a = new char[]{'a','b'};
char[] b = new char[]{'b','b', 'c', 'a'};

ArrayList<char[]> res = results(a,b);

char[] a_RESULT = res.get(0);
char[] b_RESULT = res.get(1);