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;