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

पायथन में गैर-साझा शब्दों की अधिकतम लंबाई खोजने का कार्यक्रम

मान लीजिए कि हमारे पास शब्दों नामक लोअरकेस वर्णानुक्रम की एक सूची है, हमें दो अलग-अलग शब्दों की लंबाई का अधिकतम योग खोजना होगा जो एक सामान्य अक्षर साझा नहीं करते हैं। इसलिए, यदि इनपुट शब्दों की तरह है =["abcd", "mno ", "abdcmno", "amno"], तो आउटपुट 7 होगा, क्योंकि शब्द साझा नहीं करते हैं कोई भी सामान्य अक्षर ["abcd", "mno"] हैं, कुल लंबाई 7 है।

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

  • फ़ंक्शन साइन() को परिभाषित करें। यह शब्द लेगा
  • मान :=0
  • शब्द में प्रत्येक सी के लिए, करें
    • मान :=मान या (2^(सी का एएससीआईआई - 'ए' का एएससीआईआई))
  • वापसी मूल्य
  • मुख्य विधि से, निम्न कार्य करें
  • हस्ताक्षर:=शब्दों में प्रत्येक x के लिए चिह्न (x) के साथ एक सूची
  • उत्तर:=0
  • मैं के लिए 0 से लेकर शब्दों के आकार तक, करें
    • जे श्रेणी में i + 1 से शब्दों के आकार के लिए, करें
      • यदि हस्ताक्षर[i] और हस्ताक्षर[j] 0 के समान है, तो
        • उत्तर:=अधिकतम उत्तर और शब्दों का आकार[i] + शब्दों का आकार[j]
  • वापसी उत्तर

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

उदाहरण

class Solution:
   def sign(self, word):
      value = 0
      for c in word:
         value = value | (1 << (ord(c) - 97))
      return value
   def solve(self, words):
      signature = [self.sign(x) for x in words]
      ans = 0
      for i in range(len(words)):
         for j in range(i + 1, len(words)):
            if signature[i] & signature[j] == 0:
               ans = max(ans, len(words[i]) + len(words[j]))
      return ans
ob = Solution()
words = ["abcd", "mno", "abdcmno", "amno"]
print(ob.solve(words))

इनपुट

["abcd", "mno", "abdcmno", "amno"]

आउटपुट

7

  1. पायथन में सबसे लंबी मैट्रिक्स पथ लंबाई की लंबाई खोजने का कार्यक्रम

    मान लीजिए हमारे पास एक बाइनरी मैट्रिक्स है, जहां 0 खाली सेल को इंगित करता है और 1 दीवार को इंगित करता है। हम पहली पंक्ति पर किसी भी खाली सेल से शुरू कर सकते हैं और अंतिम पंक्ति पर किसी भी खाली सेल पर समाप्त करना चाहते हैं। हम बाएँ, दाएँ या नीचे जा सकते हैं, हमें सबसे लंबा ऐसा रास्ता खोजना होगा जहाँ

  1. पायथन में समान लंबाई के k रिबन की अधिकतम लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास सकारात्मक संख्याओं की एक सूची है, जो रिबन की लंबाई का प्रतिनिधित्व करती है और एक मान k भी है। हम जितनी बार चाहें रिबन काट सकते हैं, हमें सबसे बड़ी लंबाई r ढूंढनी होगी जैसे कि हमारे पास लंबाई r के k रिबन हो सकें। अगर हमें ऐसा समाधान नहीं मिल रहा है, तो -1 पर लौटें। इसलिए, यदि

  1. पायथन में अधिकतम भवन ऊंचाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक मान n है और जोड़े की एक और सूची है जिसे प्रतिबंध कहा जाता है। हम एक शहर में नई इमारतें बनाना चाहते हैं। लेकिन कुछ प्रतिबंध हैं। हम एक लाइन में बना सकते हैं और इमारतों को 1 से n तक लेबल किया जाता है। प्रतिबंधों के दो पैरामीटर हैं, इसलिए प्रतिबंध [i] =(id_i, max_height_i) इंग