一道面试题,请大家帮忙解决,感谢了

海蓝树 2010-10-21 09:35:06
有两个数组,int[] a int[] b,这个两个数组的长度不固定,而且里面数据的大小顺序也不固定,但是可以确定一个数组长度长,一个短,而且a,b数组的有不确定的相同元素的数量,如何获取两个数组中不相同的数组,并把不相同的元素形成一个新的数组,有个要求,只有使用一个for循环
...全文
559 53 打赏 收藏 转发到动态 举报
写回复
用AI写文章
53 条回复
切换为时间正序
请发表友善的回复…
发表回复
java447060786 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 q107770540 的回复:]
linq except
一个for都不需要

string[] A ={ "3", "4", "5", "6" };
string[] B ={ "5", "4", "3", "8" };
string[] C=A.Except(B).ToArray();
[/Quote]
学习啦
Adechen 2010-10-21
  • 打赏
  • 举报
回复
linq 是较好的选择,
楼上有人写了代码
海蓝树 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 sandy945 的回复:]
C# code

int[] intArrayOne = { 1, 2, 3, 6 };
int[] intArrayTwo = { 3, 6, 7, 8, 10 };

Dictionary<int, string> dic = new Dictionary<int, string>();

int len ……
[/Quote]
ToArray<string>()));
这个东西C#里面好像没有啊
海蓝树 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 sisi88 的回复:]
string[] A = { "3", "4", "5", "6" };
string[] B = { "5", "4", "3", "8" };
string[] C = A.Except(B).Concat(B.Except(A)).ToArray();
for (int i = 0; i < C.Length; i++)
{
Console.Write(C[i]……
[/Quote]
我在asp.net社区里发的提问,为什么要贴上JAVA的代码,而且找的还是相同的,不过还你提供的思路
zhangaijiang 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 q107770540 的回复:]
linq except
一个for都不需要

string[] A ={ "3", "4", "5", "6" };
string[] B ={ "5", "4", "3", "8" };
string[] C=A.Except(B).ToArray();
[/Quote]

学习
阿非 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 q107770540 的回复:]
linq except
一个for都不需要

string[] A ={ "3", "4", "5", "6" };
string[] B ={ "5", "4", "3", "8" };
string[] C=A.Except(B).ToArray();
[/Quote]

如果我是面试官,会问你 Except 方法是如何实现的?
阿非 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 xwnxwn 的回复:]
二楼的方法虽然看起来是用了一个循环,实际上还用用了个二个循环,!list.Contains(B[i].ToString())来比较的时候,实际上就是一个循环,而且按照二楼的方法要把字符串变成数组还要时使用一个循环,但是,本人仍然感谢大家的帮忙,并且期待高手的出现!!
[/Quote]

数组A 中的 6 并没有输出
阿非 2010-10-21
  • 打赏
  • 举报
回复

int[] intArrayOne = { 1, 2, 3, 6 };
int[] intArrayTwo = { 3, 6, 7, 8, 10 };

Dictionary<int, string> dic = new Dictionary<int, string>();

int len = intArrayOne.Length > intArrayTwo.Length ? intArrayOne.Length : intArrayTwo.Length;

for (int i = 0; i < len; i++)
{
if (i < intArrayOne.Length)
{
dic[intArrayOne[i]] = intArrayOne[i].ToString();
}
if (i < intArrayTwo.Length)
{
dic[intArrayTwo[i]] = intArrayTwo[i].ToString();
}
}

Console.Write(string.Join(",", dic.Values.ToArray<string>()));


xiaozhu4002 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yan267 的回复:]

C# code


string str="";
string[] A ={ "3", "4", "5", "6" };
string[] B ={ "5", "4", "3", "8" };
int[] A1 ={ 3, 4, 5, 6 };


ArrayList list = new Arra……
[/Quote]
绿野仙踪 2010-10-21
  • 打赏
  • 举报
回复
public List fun(int[] a, int[] b){
List list = new ArrayList();
for(int i=0,j=0; j<a.length;){
System.out.println("i="+i+"j="+j);
if(i >= b.length){
i =0;
j++;
}
System.out.println("compare:a["+j+"]="+a[j]+",b["+j+"]="+b[i]);
if(a[j] != b[i]){
i++;
continue;
}else{
list.add(a[j]);
j++;
i=0;
continue;
}
}
return list;
}

这个我测试过了没有问题
sisi88 2010-10-21
  • 打赏
  • 举报
回复
string[] A = { "3", "4", "5", "6" };
string[] B = { "5", "4", "3", "8" };
string[] C = A.Except(B).Concat(B.Except(A)).ToArray();
for (int i = 0; i < C.Length; i++)
{
Console.Write(C[i].ToString());
}

Console.ReadLine();
yzf86211861 2010-10-21
  • 打赏
  • 举报
回复
.........................
Esc836 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 q107770540 的回复:]
linq except
一个for都不需要

string[] A ={ "3", "4", "5", "6" };
string[] B ={ "5", "4", "3", "8" };
string[] C=A.Except(B).ToArray();
[/Quote]
^^^^
lf12304218 2010-10-21
  • 打赏
  • 举报
回复
string str = "";
int[] a ={ 1, 2, 3, 5, 8 };
int[] b ={ 3, 4, 5, 6 };
for (int i = 0, j = 0; i < a.Length && j < b.Length; )
{
if (a[i] == b[j])
{
i++;
continue;
}
else if (j == b.Length - 1)//说明b[] 中不存在a[i]
{
str += a[i].ToString() + " ; ";
i++; j = 0; //比较a[]中的下一个数
}
else
{
j++;
}

}
MessageBox.Show(str); //show 出a[]中有b[]中没有的
int64 2010-10-21
  • 打赏
  • 举报
回复
一个for也是完全可以实现

所有操作都一次做了
海蓝树 2010-10-21
  • 打赏
  • 举报
回复
二楼的方法虽然看起来是用了一个循环,实际上还用用了个二个循环,!list.Contains(B[i].ToString())来比较的时候,实际上就是一个循环,而且按照二楼的方法要把字符串变成数组还要时使用一个循环,但是,本人仍然感谢大家的帮忙,并且期待高手的出现!!
deyygywxf 2010-10-21
  • 打赏
  • 举报
回复
string str="";
string[] A ={ "3", "4", "5", "6" };
string[] B ={ "5", "4", "3", "8" };
int[] A1 ={ 3, 4, 5, 6 };


ArrayList list = new ArrayList(A);
for (int i = 0; i < B.Length; i++)
{
if (!list.Contains(B[i].ToString()))
{

if(str=="")
{
str=B[i].ToString();
}
else
{
str=str+","+B[i].ToString();
}

}
}
Response.Write(str);

zengjiaqin 2010-10-21
  • 打赏
  • 举报
回复
向2楼学习
海蓝树 2010-10-21
  • 打赏
  • 举报
回复
Except 似乎最后也应用到了循环
海蓝树 2010-10-21
  • 打赏
  • 举报
回复
所有循环类的语句只有用一次
加载更多回复(31)

62,017

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧