当前位置:首页 > 行业动态 > 正文

如何在C中实现高效的回文检测方法?

### C#实现回文检测方法:该文介绍了C#中实现 回文检测的多种方法,包括使用递归、栈和队列等数据结构。通过具体代码示例,展示了如何判断字符串或数字是否为回文,并提供了详细的算法实现及运行结果分析。

在C#中实现回文检测的方法有多种,以下是几种常见的方法:

如何在C中实现高效的回文检测方法?  第1张

方法一:双指针法

1、原理:设置两个指针,一个从字符串的起始位置开始,另一个从字符串的末尾位置开始,依次向中间移动,比较所指向的字符是否相等,如果始终相等,则字符串为回文;如果有任何不相等的情况,则字符串不是回文。

2、代码示例

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("请输入一个字符串:");
        string str = Console.ReadLine();
        bool isPalindrome = IsPalindrome(str);
        if (isPalindrome)
        {
            Console.WriteLine("这是回文");
        }
        else
        {
            Console.WriteLine("这不是回文");
        }
    }
    private static bool IsPalindrome(string str)
    {
        int left = 0;
        int right = str.Length 1;
        while (left < right)
        {
            if (str[left] != str[right])
            {
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
}

方法二:栈法

1、原理:将字符串的前半部分压入栈中,然后依次弹出与字符串的后半部分进行比较,可以判断字符串是否为回文。

2、代码示例

using System;
using System.Collections.Generic;
class Program
{
    static void Main()
    {
        Console.WriteLine("请输入一个字符串:");
        string str = Console.ReadLine();
        bool isPalindrome = IsPalindromeWithStack(str);
        if (isPalindrome)
        {
            Console.WriteLine("这是回文");
        }
        else
        {
            Console.WriteLine("这不是回文");
        }
    }
    private static bool IsPalindromeWithStack(string str)
    {
        Stack<char> stack = new Stack<char>();
        for (int i = 0; i < str.Length / 2; i++)
        {
            stack.Push(str[i]);
        }
        for (int i = (str.Length + 1) / 2; i < str.Length; i++)
        {
            if (str[i] != stack.Pop())
            {
                return false;
            }
        }
        return true;
    }
}

方法三:反转字符串法

1、原理:将字符串反转,然后与原字符串进行比较,如果相等则是回文,否则不是回文。

2、代码示例

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("请输入一个字符串:");
        string str = Console.ReadLine();
        bool isPalindrome = IsPalindromeByReverse(str);
        if (isPalindrome)
        {
            Console.WriteLine("这是回文");
        }
        else
        {
            Console.WriteLine("这不是回文");
        }
    }
    private static bool IsPalindromeByReverse(string str)
    {
        char[] charArray = str.ToCharArray();
        Array.Reverse(charArray);
        string reversedStr = new string(charArray);
        return str == reversedStr;
    }
}
0