发布于2024-11-02 21:02 阅读(973) 评论(0) 点赞(10) 收藏(5)
我目前正在编写一个小函数,它应该返回一个数组中有多少个项目与另一个数组位于完全相同的位置,以及有多少个项目位于不同的位置。
该函数目前如下所示:
public static int[] numCorrects(char[] leftarray, char[] rightarray){
int counter[] = new int[2];
counter[0] = 0;
counter[1] = 0;
for (int i = 0; i < leftarray.length; i++) {
if(leftarray[i]==rightarray[i]) counter[0]++;
else {
for (int n = 0; n < leftarray.length; n++) {
if (leftarray[i] == rightarray[n] && leftarray[n] != rightarray[n]) {
counter[1]++;
break;
}
}
}
}
return counter;
}
leftarray
如果我有和(1, 2, 3, 4)
的rightarray
,这种方法就很好了(4, 3, 2, 2)
它返回(0, 3)
(0 个完全匹配,3 个存在但位于不同位置)
但现在的问题是:
如果我将输入与和的输出交换,leftarray
则(4, 3, 2, 2)
这是rightarray
错误的(应该与第一个相同)(1, 2, 3, 4)
(0, 4)
希望有人能帮助我。谢谢
试试这个:
public static int[] numCorrects(char[] leftarray, char[] rightarray){
int counter[] = new int[2];
counter[0] = 0;
counter[1] = 0;
boolean taken[] = new boolean[rightarray.length];
for (int i=0;i<taken.length;i++)
taken[i] = false;
for (int i = 0; i < leftarray.length; i++) {
if(leftarray[i]==rightarray[i]){ counter[0]++; taken[i] = true; }
else {
for (int n = 0; n < leftarray.length; n++) {
if (leftarray[i] == rightarray[n] && leftarray[n] != rightarray[n] && !taken[n]) {
taken[n] = true;
counter[1]++;
break;
}
}
}
}
return counter;
}
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/691847/1835538b9e381a50a680/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!