我做了一个简单的函数,它通过对排序后的值进行排序和比较来检查两个单词是否是变位词,但是即使单词不是变位词,该程序也始终返回 true。如果我删除 .ToString() 它评估为假。知道为什么要这样做以及有关如何解决此问题的任何想法吗?public bool anagram(string word1, string word2) { char[] word1Arr = word1.ToArray(); char[] word2Arr = word2.ToArray(); Array.Sort(word1Arr); Array.Sort(word2Arr); Console.WriteLine(word1Arr); Console.WriteLine(word2Arr); if (word1Arr.ToString() == word2Arr.ToString()) { return true; } else { return false; } }
2 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
代替
if (word1Arr.ToString() == word2Arr.ToString())
和
if (word1Arr.SequenceEqual(word2Arr))
比较数组的内容 - 因为word1Arr.ToString()
返回"System.Char[]"
和您的比较结果为
"System.Char[]" == "System.Char[]"
永远是真的
慕斯709654
TA贡献1840条经验 获得超5个赞
您还可以使用此比较:
if(new string(word1Arr) == new string (word2Arr))
ToString
方法在char[]
返回类型名称时具有默认实现System.Char[]
,这就是为什么当您比较两个char[]
.
与另一个答案相比:我的方法创建了两个额外的string
类实例,而另一个答案在不创建额外对象的情况下比较数组。
- 2 回答
- 0 关注
- 230 浏览
添加回答
举报
0/150
提交
取消