当前位置: 首页 > 编程语言 > C#

检查两个字符串数组是否等效分享

时间:2023-04-10 13:32:25 C#

C#学习教程:判断两个字符串数组是否相等string[]first=newstring[]{"cat","and","mouse"};string[]second=newstring[]{"cat","and","mouse"};boolcontentsEqual=true;if(first.Length==second.Length){foreach(stringsinfirst){contentsEqual&=second.Contains(s);}}else{contentsEqual=false;}Console.WriteLine(contentsEqual.ToString());//trueEnumerable.SequenceEquals如果它们应该以相同的顺序排列。您应该考虑使用相交方法。它将为您提供所有匹配值,然后您可以将结果数组的计数与比较数组进行比较。http://msdn.microsoft.com/en-us/library/system.linq.enumerable.intersect.aspx这是O(n^2)。如果数组长度相同,则对它们进行排序,并比较相同位置的元素。这是O(nlogn)。或者您可以使用哈希集或字典:将每个单词插入第一个数组,然后查看第二个数组中的每个单词是否在集合或字典中。这平均为O(n)。该方法的逻辑没有任何问题,但您正在为第一个序列中的每个项目测试Contains这一事实意味着该算法通常在O(n^2)时间内运行。您还可以进行一两个其他小的优化和改进,我将按如下方式实施。扩展方法定义如下(.NET4.0中的示例)。publicstaticboolSequenceEquals(thisIEnumerableseq1,IEnumerableseq2){foreach(varpairinEnumerable.Zip(seq1,seq2){if(!pair.Item1.Equals(pair.Item2))return;}returnfalse;}你可以试试Enumerable.Intersect:http://msdn.microsoft.com/en-us/library/bb460136.aspx运算的结果是两个数组共有的每一个元素。如果结果的长度等于两个数组的长度数组,然后两个数组都包含相同的项目。Enumerable.Union:http://msdn.microsoft.com/en-us/library/bb341731.aspx也可以;只要检查Union操作的结果是否为零(意思是没有elementsonlyforAnarrayisunique);虽然我不太确定函数是如何处理重复的。以上就是C#学习教程的全部内容:检查两个字符串数组是否等价。如果对大家有用,需要了解更多C#学习教程,希望大家多加关注~本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处: