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

पायथन में वर्णों को पुनर्व्यवस्थित करके पालिंड्रोम स्ट्रिंग पहले प्राप्त करने वाला खिलाड़ी खोजें


मान लीजिए हमारे पास छोटे अक्षरों की एक स्ट्रिंग S है। अब दो खिलाड़ी खेल खेल रहे हैं। नियम इस प्रकार हैं:

  • खिलाड़ी खेल जीतता है यदि किसी चाल में वह स्ट्रिंग के वर्णों को फेरबदल करके पालिंड्रोम स्ट्रिंग प्राप्त कर सकता है।
  • खिलाड़ी तब नहीं जीत सकता जब उसे स्ट्रिंग से कोई वर्ण हटाना पड़े।

हमें ध्यान रखना है कि दोनों खिलाड़ी इष्टतम खेलते हैं और खिलाड़ी 1 खेल शुरू करता है। हमें खेल का विजेता ढूंढना है।

इसलिए, यदि इनपुट "pqpppq" है, तो आउटपुट Player1 होगा क्योंकि खिलाड़ी-1 पहले चरण में वर्णों को व्यवस्थित करके "ppqqpp" प्राप्त करता है और खेल जीत जाता है।

समाधान दृष्टिकोण

इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:

  • l := len(sequence)
  • freq := [0] * 26
  • i को 0 से l-1 तक: freq[ord(sequence[i]) - ord('a')] += 1
  • count := 0
  • i को 0 से 25 तक:
    • यदि freq[i] % 2 != 0, तो count += 1
  • यदि count == 0 या count विषम है, तो 1 लौटाएं (खिलाड़ी 1 जीतता है)।
  • अन्यथा, 2 लौटाएं (खिलाड़ी 2 जीतता है)।

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

def who_is_the_winner(sequence):
    l = len(sequence)
    freq = [0 for i in range(26)]
    for i in range(l):
        freq[ord(sequence[i]) - ord('a')] += 1
    count = 0
    for i in range(26):
        if freq[i] % 2 != 0:
            count += 1
    if count == 0 or count & 1 == 1:
        return 1
    else:
        return 2

sequence = "pqpppq"
print("Player:", who_is_the_winner(sequence))

इनपुट

"pqpppq"

आउटपुट

Player: 1
  1. - स्ट्रिंग में पहला दोहराया गया शब्द खोजने के लिए पायथन प्रोग्राम

    समस्या विवरण एक स्ट्रिंग दी गई है। हमारा कार्य उस स्ट्रिंग में पहला दोहराया गया शब्द खोजना है। इसके लिए हम पायथन के collections मॉड्यूल से Counter() विधि का उपयोग करते हैं। एल्गोरिदम दिए गए स्ट्रिंग को स्पेस से अलग करके शब्दों की सूची बनाएं। शब्दों की सूची को डिक्शनरी में बदलें (शब्द: आवृत्ति)। 1

  1. - पायथन में स्ट्रिंग के पहले 100 कैरेक्टर कैसे प्राप्त करें?

    पायथन में स्लाइस (:) ऑपरेटर आपको स्ट्रिंग का एक भाग प्राप्त करने की अनुमति देता है। स्लाइस ऑपरेटर के दो ऑपरेंड होते हैं, स्लाइस की शुरुआत का इंडेक्स और स्लाइस का अंत। substr = var[x:y] निम्नलिखित उदाहरण में, 7वें कैरेक्टर से तीन कैरेक्टर प्राप्त किए जाते हैं (पायथन सीक्वेंस जीरो-बेस्ड इंडेक्स का उ

  1. - पायथन में स्ट्रिंग की लंबाई कैसे प्राप्त करें?

    पायथन में len() नामक एक मेथड होता है जो हमें किसी भी कंपोजिट ऑब्जेक्ट की लंबाई देता है। स्ट्रिंग की लंबाई प्राप्त करने के लिए, बस स्ट्रिंग को len() कॉल में पास करें। उदाहरण के लिए, print(len(abcdefghijklmnopqrstuvwxyz)) आउटपुट: 26