📌  相关文章
📜  C# 检查字符串是否为回文. - C# (1)

📅  最后修改于: 2023-12-03 14:59:42.848000             🧑  作者: Mango

C# 检查字符串是否为回文

回文是指正向和反向读法都相同的字符串。在这篇文章中,我们将学习如何使用 C# 编写一个函数来检查一个字符串是否为回文。

实现步骤
  1. 首先,我们需要创建一个 C# 控制台应用程序。打开 Visual Studio 或者其他 C# 开发工具,并创建一个新的控制台应用程序项目。

  2. Program.cs 文件中,创建一个名为 IsPalindrome 的静态方法,该方法用于检查一个字符串是否为回文。方法的参数为一个字符串,返回值为布尔类型。函数签名如下:

public static bool IsPalindrome(string str)
  1. IsPalindrome 方法中,我们将实现字符串的回文检查逻辑。下面是具体的步骤:

    • 首先,我们需要移除字符串中的所有非字母和数字的字符,只保留其它字符。我们可以使用正则表达式来实现这一步骤。

    • 然后,我们将字符串转换为小写,并将其转换为字符数组。

    • 接下来,我们使用双指针技术,同时从字符串的两端开始比较字符。如果两个字符不相等,那么该字符串不是回文。

    • 最后,如果所有字符都通过了比较,则该字符串是回文,我们将返回 true

  2. Main 方法中,我们可以编写一些测试用例来验证 IsPalindrome 方法的正确性。下面是一个示例:

static void Main(string[] args)
{
    string str1 = "abcdcba";
    string str2 = "hello";
    
    Console.WriteLine(IsPalindrome(str1)); // 输出:True
    Console.WriteLine(IsPalindrome(str2)); // 输出:False
}
完整代码
using System;
using System.Text.RegularExpressions;

class Program
{
    public static bool IsPalindrome(string str)
    {
        // 移除非字母和数字的字符
        string cleanedString = Regex.Replace(str, "[^a-zA-Z0-9]", "");
        
        // 转换为小写并转换为字符数组
        char[] charArray = cleanedString.ToLower().ToCharArray();
        
        int left = 0;
        int right = charArray.Length - 1;
        
        while (left < right)
        {
            if (charArray[left] != charArray[right])
            {
                return false;
            }
            
            left++;
            right--;
        }
        
        return true;
    }

    static void Main(string[] args)
    {
        string str1 = "abcdcba";
        string str2 = "hello";
        
        Console.WriteLine(IsPalindrome(str1)); // 输出:True
        Console.WriteLine(IsPalindrome(str2)); // 输出:False
    }
}

以上就是使用 C# 编写一个字符串回文检查的完整示例代码。你可以根据自己的需要进行扩展和修改。