Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Kiểm tra chuỗi Palindrome trong C#

Palindrome: Đọc xuôi ngược giống nhau (bỏ qua case). Ví dụ: "Level".

Thuật toán

  1. Chuyển thành char array
  2. Reverse array
  3. Tạo string mới từ reversed array
  4. So sánh với original (IgnoreCase)
string str = "Level";
char[] ch = str.ToCharArray();
Array.Reverse(ch);
string rev = new string(ch);
bool isPalindrome = str.Equals(rev, StringComparison.OrdinalIgnoreCase);

Ví dụ hoàn chỉnh

using System;

namespace Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = "Level";
            char[] ch = str.ToCharArray();
            Array.Reverse(ch);
            string rev = new string(ch);
            
            bool res = str.Equals(rev, StringComparison.OrdinalIgnoreCase);
            
            if (res)
                Console.WriteLine($"Chuỗi '{str}' là Palindrome!");
            else
                Console.WriteLine($"Chuỗi '{str}' không phải Palindrome!");
            
            Console.Read();
        }
    }
}

Kết quả

Chuỗi 'Level' là Palindrome!

Cách khác:

  • LINQ: str.SequenceEqual(str.Reverse()) (cần ToLower)
  • Two pointers: so sánh đầu/cuối, O(1) space
  • new string(str.Reverse().ToArray())

Mở rộng: Bỏ qua khoảng trắng, dấu câu: string clean = new string(str.Where(char.IsLetterOrDigit).ToArray()).ToLower();