Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में स्ट्रिंग पालिंड्रोम जांचना

पालिंड्रोम (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 केस-इनसेंसिटिव तुलना के लिए मानक है।
  • वाक्य पालिंड्रोम के लिए गैर-अल्फान्यूमेरिक कैरेक्टर्स को फ़िल्टर करें।
  1. C प्रोग्राम: रिकर्सन का उपयोग करके जांचें कि सरणी पैलिंड्रोम है या नहीं C प्रोग्राम: रिकर्सन का उपयोग करके जांचें कि सरणी पैलिंड्रोम है या नहीं

    पैलिंड्रोम सरणी एक सरणी पैलिंड्रोम होती है यदि यह आगे और पीछे से समान पढ़ी जाए। उदाहरण: {1, 2, 3, 2, 1} ✓, {1, 0, 0, 1} ✓, {1, 2, 3, 4} ✗ रिकर्सिव दृष्टिकोण आधार मामला: यदि = end → पैलिंड्रोम (true) जांच: यदि arr[start] != arr[end] → पैलिंड्रोम नहीं (false) रिकर्सन: start+1 और end-1 के साथ कॉल करे

  1. C प्रोग्राम: जांचें कि सरणी पैलिंड्रोम है या नहीं (पुनरावृत्तीय) C प्रोग्राम: जांचें कि सरणी पैलिंड्रोम है या नहीं (पुनरावृत्तीय)

    पैलिंड्रोम सरणी एक सरणी पैलिंड्रोम है यदि यह आगे और पीछे से समान पढ़ी जाती है। उदाहरण सरणीपैलिंड्रोम? {1, 0, 0, 1}हाँ {1, 2, 3, 4, 5}नहीं {7}हाँ (एकल तत्व) {}हाँ (खाली) {1, 2, 2, 1}हाँ {1, 2, 3, 2, 1}हाँ पुनरावृत्तीय एल्गोरिदम दो पॉइंटर्स: start = 0, end = n-1 जब तक start < end: यदि ar

  1. पायथन प्रोग्राम: जांचें कि दी गई स्ट्रिंग कीवर्ड है या नहीं पायथन प्रोग्राम: जांचें कि दी गई स्ट्रिंग कीवर्ड है या नहीं

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक स्ट्रिंग दी गई है, हमें जांचना है कि यह स्ट्रिंग पायथन का कीवर्ड है या नहीं। कीवर्ड किसी भी भाषा द्वारा आरक्षित विशेष शब्द होते हैं जिनका विशिष्ट उपयोग होता है और उन्हें पहचानकर्ता के रूप में उपयोग नहीं किया जा सकता। यह जां