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

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


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

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

  • एक फ़ंक्शन sign() परिभाषित करें। यह word लेगा
  • value := 0
  • प्रत्येक c के लिए word में, करें
    • value := value OR (2^(c का ASCII - 'a' का ASCII))
  • value वापस करें
  • मुख्य विधि से, निम्नलिखित करें
  • signature := प्रत्येक x के लिए words में sign(x) की सूची
  • ans := 0
  • i के लिए 0 से words के आकार तक की रेंज में, करें
    • j के लिए i + 1 से words के आकार तक की रेंज में, करें
      • यदि signature[i] AND signature[j], 0 के समान है, तो
        • ans := ans और words[i] का आकार + words[j] का आकार का अधिकतम
  • ans वापस करें

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

उदाहरण

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. - Python प्रोग्राम - k रिबन की समान लंबाई की अधिकतम लंबाई खोजें

    सकारात्मक संख्याओं की सूची दी गई है जो रिबन की लंबाई दर्शाती है, और एक मान k। हम रिबन को जितनी बार चाहें काट सकते हैं, हमें सबसे बड़ी लंबाई r खोजनी है जिससे हम k रिबन लंबाई r के प्राप्त कर सकें। यदि ऐसा समाधान नहीं मिलता, तो -1 लौटाएं। उदाहरण इनपुट: ribbons = [1, 2, 5, 7, 15], k = 5 आउटपुट: 5 व्याख

  1. Python में इमारतों की अधिकतम ऊंचाई ज्ञात करें Python में इमारतों की अधिकतम ऊंचाई ज्ञात करें

    n इमारतें एक पंक्ति में (1 से n लेबल)। प्रतिबंध: restrictions[i] = (id, max_height)। नियम: ऊंचाई ≥ 0, पहली इमारत की ऊंचाई = 0, आसन्न इमारतों में ऊंचाई अंतर ≤ 1। अधिकतम संभव ऊंचाई खोजें। एल्गोरिदम: दो पास + शिखर गणना प्रतिबंधों को id द्वारा सॉर्ट करें फॉरवर्ड पास: बाएं से दाएं, प्रत्येक प्रतिबंध को