C#回文测试
C# Palindrome Test
我需要创建一个 IsPalindrome 函数,用于确定提供的字符串是否为回文。在评估字符串是否为回文时,将考虑字母数字字符。话虽如此,我在试图忽视空格和大写字母时遇到了麻烦。这是我的函数现在的样子。
如果这有所作为:完成此函数后,我将不得不解析一个 JSON 文件并将 "strings" 数组中的每个元素放入 IsPalindrome 函数中。
有什么建议吗?
private static bool IsPalindrome(string value)
{
var min = 0;
var max = value.Length - 1;
while (true)
{
if (min > max)
return true;
var a = value[min];
var b = value[max];
if (if (char.ToLower(a) == char.ToLower(b))
{
return true;
}
else {
return false;
}
min++;
max--;
}
我这样做的方法是将字符串变成一个字符数组,跳过非字母字符,并将所有字符设为小写。然后,我会使用一个索引来检查数组的前半部分是否等于最后一部分。像这样:
public static bool IsPalindrome(string value)
{
char[] forwards = (from c in value.ToLower().ToCharArray() where char.IsLetter(c) select c).ToArray();
int middle = (forwards.Length / 2) + 1;
for (int i = 0; i < middle; i++)
if (forwards[i] != forwards[forwards.Length - 1 - i])
return false;
return true;
}
第一行使用 LINQ 来创建数组,所以你需要 using System.Linq;
我需要创建一个 IsPalindrome 函数,用于确定提供的字符串是否为回文。在评估字符串是否为回文时,将考虑字母数字字符。话虽如此,我在试图忽视空格和大写字母时遇到了麻烦。这是我的函数现在的样子。 如果这有所作为:完成此函数后,我将不得不解析一个 JSON 文件并将 "strings" 数组中的每个元素放入 IsPalindrome 函数中。 有什么建议吗?
private static bool IsPalindrome(string value)
{
var min = 0;
var max = value.Length - 1;
while (true)
{
if (min > max)
return true;
var a = value[min];
var b = value[max];
if (if (char.ToLower(a) == char.ToLower(b))
{
return true;
}
else {
return false;
}
min++;
max--;
}
我这样做的方法是将字符串变成一个字符数组,跳过非字母字符,并将所有字符设为小写。然后,我会使用一个索引来检查数组的前半部分是否等于最后一部分。像这样:
public static bool IsPalindrome(string value)
{
char[] forwards = (from c in value.ToLower().ToCharArray() where char.IsLetter(c) select c).ToArray();
int middle = (forwards.Length / 2) + 1;
for (int i = 0; i < middle; i++)
if (forwards[i] != forwards[forwards.Length - 1 - i])
return false;
return true;
}
第一行使用 LINQ 来创建数组,所以你需要 using System.Linq;