Java 删除两个字符数组之间的公共字符
这是针对一个类的,所以我们有一些非常特殊的约束。 我们不能使用ArrayList,操作必须使用数组 假设我有两个数组:Java 删除两个字符数组之间的公共字符,java,arrays,Java,Arrays,这是针对一个类的,所以我们有一些非常特殊的约束。 我们不能使用ArrayList,操作必须使用数组 假设我有两个数组: char[] firstArray = new char[]{'a','b'}; char[] secondArray = new char[]{'b','b','c',}; 我想将数组返回为: firstArray = [a]; secondArray = [b,c]; 请注意,secondArray仍然返回一个字符“b”,因为它包含两个字符,但只与firstArra
char[] firstArray = new char[]{'a','b'};
char[] secondArray = new char[]{'b','b','c',};
我想将数组返回为:
firstArray = [a];
secondArray = [b,c];
请注意,secondArray仍然返回一个字符“b”,因为它包含两个字符,但只与firstArray共享一个字符
我该怎么做?
我对编码相当陌生,所以解释就是欣赏
谢谢您应该做的第一件事是使用嵌套循环2层遍历数组,查看它们是否有重复项。当遇到重复时,增加一个计数器,并将元素更改为要用作标志的某个字符,以便在结果中不使用它 完成后,可以基于计数器重新创建比原始阵列小的新阵列
char[] newFirstArray = new char[firstArray.length - counter];
char[] newSecondArray = new char[secondArray.length - counter];
然后遍历原始数组并将剩余的好字符复制到新数组中。我创建了一个函数,该函数对您来说有些复杂,但您可能很容易理解,您应该导入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);
数组是否保证按字母顺序排序?是的,它们可以按字母顺序排序。这不保证,但这只意味着使用正确的排序方法?请提出更具体的问题。如果你上java课,在教授/老师给你做这个练习之前,你会讨论一些概念。尝试使用这些概念来解决问题,最有可能的是循环。如果你对循环有特别的问题,请改为问那些问题。@Turing85当我问这个问题时,我希望能有一对简单的句子。如果不是这样的话,我会想办法处理一些混乱的循环。谢谢你的建议。@Elaredo问SO问题的惯例是包括你尝试过的内容、示例代码等。尊敬的是,我们不是来为人们做家庭作业的。然而,我们在这里帮助您编写更干净和/或更优化的代码,帮助您理解为什么您编写的代码不能按预期工作,等等。为了让您开始,请考虑如何将数组相互比较,并删除最终答案中不包含的元素。如果您编写了一些代码并遇到了问题,请随意提出一个新问题,并附上代码示例和获得的结果。完整阅读答案,然后,如果您看到我仅用于查找结果,而结果不是arraylist,您可以发表您的评论。我会要求您阅读OP的问题。”我们不能使用ArrayList,操作必须使用arrays。谢谢你的帮助@Elaredo请检查我的答案,如果它有助于引导您找到解决方案。