我做了一個簡單的函數,它通過對排序后的值進行排序和比較來檢查兩個單詞是否是變位詞,但是即使單詞不是變位詞,該程序也始終返回 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 關注
- 260 瀏覽
添加回答
舉報
0/150
提交
取消