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

C# में पैनाग्राम (Pangram) जांचना

पैनाग्राम (Pangram) एक ऐसा वाक्य है जिसमें वर्णमाला के सभी 26 अक्षर कम से कम एक बार आते हैं।

प्रसिद्ध उदाहरण

"The quick brown fox jumps over the lazy dog"

इसमें a से z तक सभी अक्षर हैं।

उदाहरण: LINQ के साथ

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace Demo {
    public class Program {
        public static void Main(string[] args) {
            string str = "The quick brown fox jumps over the lazy dog";
            Console.WriteLine("{0}: \"{1}\" is pangram", CheckPangram(str), str);
            Console.ReadKey();
        }

        static bool CheckPangram(string str) {
            return str.ToLower()
                      .Where(ch => char.IsLetter(ch))
                      .GroupBy(ch => ch)
                      .Count() == 26;
        }
    }
}

आउटपुट

True: "The quick brown fox jumps over the lazy dog" is pangram

कोड व्याख्या

  1. ToLower() - केस-इनसेंसिटिव तुलना के लिए
  2. Where(ch => char.IsLetter(ch)) - केवल अक्षर फिल्टर करें (स्पेस, विराम चिह्न हटाएं)
  3. GroupBy(ch => ch) - अद्वितीय अक्षरों में समूहित करें
  4. Count() - अद्वितीय अक्षरों की गिनती
  5. == 26 - अंग्रेजी वर्णमाला के 26 अक्षरों से तुलना

अधिक कुशल दृष्टिकोण: HashSet

public static bool IsPangram(string str) {
    var letters = new HashSet();
    foreach (char c in str.ToLower()) {
        if (char.IsLetter(c)) letters.Add(c);
        if (letters.Count == 26) return true; // जल्दी निकलें
    }
    return false;
}

बिटमास्क दृष्टिकोण (सबसे तेज, O(n) समय, O(1) स्थान)

public static bool IsPangramBitmask(string str) {
    int mask = 0;
    const int ALL_LETTERS = (1 << 26) - 1; // 0x3FFFFFF = 26 बिट्स सेट

    foreach (char c in str) {
        if (c >= 'a' && c <= 'z')
            mask |= 1 << (c - 'a');
        else if (c >= 'A' && c <= 'Z')
            mask |= 1 << (c - 'A');
        
        if (mask == ALL_LETTERS) return true;
    }
    return mask == ALL_LETTERS;
}

पैनाग्राम के प्रकार

  • परफेक्ट पैनाग्राम: प्रत्येक अक्षर ठीक एक बार (26 अक्षर कुल) - अत्यंत दुर्लभ
  • सामान्य पैनाग्राम: प्रत्येक अक्षर कम से कम एक बार
  • सेल्फ-एन्यूमरेटिंग पैनाग्राम: अपनी अक्षर गिनती का वर्णन करता है

अन्य भाषाओं के लिए

// यूनिकोड वर्णमाला के लिए (सामान्यीकृत)
public static bool IsPangramUnicode(string str, string alphabet) {
    var letters = new HashSet(alphabet.ToLower());
    foreach (char c in str.ToLower()) {
        letters.Remove(c);
        if (letters.Count == 0) return true;
    }
    return false;
}
  1. पायथन प्रोग्राम: जांचें कि दी गई स्ट्रिंग कीवर्ड है या नहीं पायथन प्रोग्राम: जांचें कि दी गई स्ट्रिंग कीवर्ड है या नहीं

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

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

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट एक स्ट्रिंग इनपुट दिए जाने पर, हमें जांचना होगा कि स्ट्रिंग खाली है या नहीं। पायथन स्ट्रिंग्स प्रकृति में इम्यूटेबल होती हैं इसलिए किसी भी ऑपरेशन को करते समय स्ट्रिंग्स को संभालते समय

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

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट एक स्ट्रिंग इनपुट दिए जाने पर, हमें यह जांचने के लिए एक पायथन प्रोग्राम जनरेट करना होगा कि वह स्ट्रिंग पैंग्राम है या नहीं। एक पैंग्राम एक वाक्य/शब्दों की श्रृंखला है जिसमें अंग्रेजी