📜  c# palidrone - C# (1)

📅  最后修改于: 2023-12-03 15:29:46.102000             🧑  作者: Mango

C# Palindrome

本文将介绍C#中的回文字符串(Palindrome)。回文字符串是指正序和倒序读起来一样的字符串,例如“racecar”和“level”。

判断回文字符串的方法

判断一个字符串是否为回文字符串的方法可以有多种,以下是其中两种常用的方法:

1. 倒序比较

将待判断的字符串倒序,然后与原字符串比较是否一致。如果一致,则为回文字符串。

public static bool IsPalindrome(string s)
{
    string reversed = new string(s.Reverse().ToArray());
    return s.Equals(reversed, StringComparison.OrdinalIgnoreCase);
}

以上是倒序比较法的实现。该方法先利用LINQ的Reverse()方法将字符串倒序,然后使用Equals()方法判断是否一致。需要注意的是,该方法将忽略大小写,因此两个(或多个)字母相同但大小写不同的字符串也会被视为回文字符串。

2. 双指针判断

使用两个指针,一个从字符串头开始,一个从字符串尾开始,每次移动指针并比较两指针所指的字符是否一致。如果一致,则继续移动指针并比较,直到两指针相遇为止。如果一直都是一致的,则为回文字符串。

public static bool IsPalindrome(string s)
{
    int left = 0, right = s.Length - 1;
    while (left <= right)
    {
        if (s[left] != s[right])
            return false;
        left++;
        right--;
    }
    return true;
}

以上是双指针判断法的实现。该方法先定义两个指针分别指向字符串头和尾,然后每次移动指针并比较两指针所指的字符是否一致。如果不一致,则不是回文字符串;如果一致,则继续移动指针并比较。如果直到两指针相遇时一直都是一致的,则为回文字符串。

性能比较

对于两种方法,它们的时间复杂度都为O(n),其中n为字符串长度。因此,在时间复杂度上两种方法并没有明显的优劣。而在空间复杂度上,倒序比较法由于需要用到一个新字符串变量,因此空间复杂度为O(n);而双指针判断法只需要常数级别的空间,因此其空间复杂度为O(1)。因此,在空间复杂度上,双指针判断法是更优的选择。

总结

回文字符串是很常见的一个概念,在实际开发中经常用到。本文介绍了两种常用的判断回文字符串的方法,展示了它们的实现和性能比较。