在C#中实现回文检测的方法有多种,以下是几种常见的方法:
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; } }