Palindrome là chuỗi đọc xuôi và ngược giống nhau (ví dụ: "Madam", "Racecar", "level").
Cách kiểm tra:
- Chuyển chuỗi thành mảng ký tự.
- Đảo ngược mảng (
Array.Reverse). - Tạo chuỗi mới từ mảng đã đảo.
- So sánh chuỗi gốc và chuỗi đảo (bỏ qua chữ hoa/thường).
Ví dụ: "Madam"
using System;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
string string1 = "Madam";
char[] ch = string1.ToCharArray();
Array.Reverse(ch);
string rev = new string(ch);
// So sánh bỏ qua hoa/thường
bool isPalindrome = string1.Equals(rev, StringComparison.OrdinalIgnoreCase);
if (isPalindrome)
Console.WriteLine("String \"{0}\" is a Palindrome!", string1);
else
Console.WriteLine("String \"{0}\" is not a Palindrome!", string1);
Console.Read();
}
}
}
Kết quả
String "Madam" is a Palindrome!
Cách khác: Duyệt 2 con trỏ (two pointers) từ đầu/cuối so sánh từng ký tự, O(n) time, O(1) space, không cần cấp phát mảng mới.