我想比较两个char数组,看它们的内容是否是回文。
static bool isPalindrome(string s)
{
char[] normal = s.ToCharArray();
char[] reversed = s.ToCharArray();
Array.Reverse(reversed);
return (normal == reversed) ? true : false;
}
问题是这个方法永远不会返回true。即使数组包含回文。
这里有什么问题?
编辑:
答案:数组是参考类型。我比较了参考,而不是内容。
Enumerable.SequenceEqual(normal,reversed);
答案 0 :(得分:3)
您将两个阵列进行比较,而不是数组的内容。所以基本上你要比较两个内存位置并询问"它们是否相同?"。
想想这样,你有2个桶,你把一套袜子放在一个桶里,另一个放在另一个桶里。这2个桶是否相同?不......尽管他们的内容可能是。
为了完整性检查此问题,请回答如何实现您针对Easiest way to compare arrays in C#
的比较