पालिंड्रोम (Palindrome) वह स्ट्रिंग है जो आगे और पीछे से पढ़ने पर समान होती है (जैसे: "madam", "racecar", "मालायालम")।
उदाहरण: Array.Reverse का उपयोग
using System;
namespace PalindromeCheck {
class Program {
static void Main(string[] args) {
string original = "Malayalam";
char[] chars = original.ToCharArray();
Array.Reverse(chars);
string reversed = new string(chars);
// केस-इनसेंसिटिव तुलना
bool isPalindrome = original.Equals(reversed, StringComparison.OrdinalIgnoreCase);
if (isPalindrome) {
Console.WriteLine($"\"{original}\" is a Palindrome!");
} else {
Console.WriteLine($"\"{original}\" is not a Palindrome!");
}
Console.Read();
}
}
}
आउटपुट
"Malayalam" is a Palindrome!
बेहतर दृष्टिकोण: दो-पॉइंटर तकनीक (O(1) स्थान)
public static bool IsPalindrome(string str) {
if (string.IsNullOrEmpty(str)) return true;
int left = 0;
int right = str.Length - 1;
while (left < right) {
// गैर-अल्फान्यूमेरिक छोड़ें (वैकल्पिक)
while (left < right && !char.IsLetterOrDigit(str[left])) left++;
while (left < right && !char.IsLetterOrDigit(str[right])) right--;
if (char.ToLower(str[left]) != char.ToLower(str[right]))
return false;
left++;
right--;
}
return true;
}
LINQ के साथ (संक्षिप्त लेकिन O(n) स्थान)
using System.Linq; bool isPalindrome = str.SequenceEqual(str.Reverse()); // केस-इनसेंसिटिव bool isPalindrome = str.ToLower().SequenceEqual(str.ToLower().Reverse());
केस और गैर-अल्फान्यूमेरिक को नज़रअंदाज करना
// "A man, a plan, a canal: Panama" → true string cleaned = new string(str.Where(char.IsLetterOrDigit).ToArray()).ToLower(); bool isPalindrome = cleaned.SequenceEqual(cleaned.Reverse());
मुख्य बिंदु
Array.Reverse+new string()सरल लेकिन O(n) अतिरिक्त स्थान उपयोग करता है।- दो-पॉइंटर दृष्टिकोण O(1) स्थान में इन-प्लेस जांच करता है।
StringComparison.OrdinalIgnoreCaseकेस-इनसेंसिटिव तुलना के लिए मानक है।- वाक्य पालिंड्रोम के लिए गैर-अल्फान्यूमेरिक कैरेक्टर्स को फ़िल्टर करें।