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

पायथन में अद्वितीय वर्णों वाले संयोजित स्ट्रिंग की अधिकतम लंबाई ढूंढने का प्रोग्राम

स्ट्रिंग्स की एक सूची words दी गई है। हमें शब्दों के एक उपअनुक्रम को संयोजित करके एक स्ट्रिंग बनानी है जिसमें प्रत्येक वर्ण अद्वितीय हो (कोई डुप्लिकेट नहीं)। ऐसे सबसे लंबे संयोजन की लंबाई वापस करनी है।

उदाहरण

इनपुट: words = ["xyz", "xyw", "wab", "cde"]

आउटपुट: 9

व्याख्या: हम "xyz" + "wab" + "cde" = "xyzwabcde" (लंबाई 9) चुन सकते हैं। सभी वर्ण अद्वितीय हैं।

एल्गोरिदम (बैकट्रैकिंग)

  1. वैश्विक चर ans = 0 से शुरू करें।
  2. एक सहायक फ़ंक्शन is_unique(s) परिभाषित करें जो जांचता है कि स्ट्रिंग s के सभी वर्ण अद्वितीय हैं या नहीं (सेट का उपयोग करके)।
  3. पुनरावर्ती फ़ंक्शन recur(i, cur) परिभाषित करें:
    • यदि i == len(words): ans = max(ans, len(cur)) अपडेट करें और वापस लौटें।
    • वर्तमान शब्द को छोड़कर आगे बढ़ें: recur(i+1, cur)।
    • यदि words[i] के सभी वर्ण अद्वितीय हैं और cur + words[i] के सभी वर्ण अद्वितीय हैं, तो इसे शामिल करें: recur(i+1, cur + words[i])।
  4. recur(0, "") कॉल करें और ans वापस करें।

पायथन कार्यान्वयन

class Solution:
    def solve(self, words):
        ans = 0
        
        def is_unique(s):
            return len(set(s)) == len(s)
        
        def recur(i=0, cur=""):
            nonlocal ans
            if i == len(words):
                ans = max(ans, len(cur))
                return
            # वर्तमान शब्द छोड़ें
            recur(i + 1, cur)
            # वर्तमान शब्द शामिल करें यदि संभव हो
            if is_unique(words[i]) and is_unique(cur + words[i]):
                recur(i + 1, cur + words[i])
        
        recur()
        return ans

# परीक्षण
ob = Solution()
words = ["xyz", "xyw", "wab", "cde"]
print(ob.solve(words))  # आउटपुट: 9

बिटमास्क अनुकूलन

प्रत्येक शब्द को 26-बिट पूर्णांक (a-z के लिए) के रूप में दर्शाया जा सकता है। यदि शब्द में डुप्लिकेट वर्ण हैं, तो उसे छोड़ दें। फिर बैकट्रैकिंग में बिटवाइज़ AND/OR का उपयोग करके O(1) में अद्वितीयता जांचें। यह बड़े इनपुट के लिए बहुत तेज़ है।

समय जटिलता

  • बैकट्रैकिंग: O(2^n × L) जहां n शब्दों की संख्या है और L औसत लंबाई है।
  • बिटमास्क के साथ: O(2^n) व्यावहारिक रूप से तेज़।
  1. पायथन प्रोग्राम: जांचें कि स्ट्रिंग में सभी यूनिक कैरेक्टर्स हैं या नहीं पायथन प्रोग्राम: जांचें कि स्ट्रिंग में सभी यूनिक कैरेक्टर्स हैं या नहीं

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट एक स्ट्रिंग इनपुट दिए जाने पर, हमें यह ढूंढना होगा कि स्ट्रिंग में सभी यूनिक कैरेक्टर्स हैं या नहीं। दृष्टिकोण हम बूलियन वैल्यूज़ का एक ऐरे बनाएंगे, जहां इंडेक्स i पर वेरिएबल फ्लैग

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

    एक यूजर इनपुट स्ट्रिंग और पोजिशन दी गई है, उस पोजिशन से हमें स्ट्रिंग की लंबाई तक अल्फाबेटिकल ऑर्डर में कैरेक्टर्स को मिरर करना है। इस ऑपरेशन में, हम a को z में, b को y में, c को x में, d को w में बदलते हैं और इसी तरह, यानी पहला कैरेक्टर लास्ट बन जाता है और इसी तरह।Input: p = 3 Input string = python

  1. - असामान्य वर्णों के साथ स्ट्रिंग जोड़ने के लिए पायथन प्रोग्राम

    समस्या विवरण दो स्ट्रिंग्स दी गई हैं। पहली स्ट्रिंग से सभी सामान्य तत्व हटाएं और दूसरी स्ट्रिंग के असामान्य वर्णों को पहली स्ट्रिंग के असामान्य तत्वों के साथ जोड़ें। उदाहरण CDMNP एल्गोरिदम दोनों स्ट्रिंग्स को सेट st1 और st2 में बदलें। दोनों सेट्स का इंटरसेक्शन लेकर सामान्य वर्ण प्राप्त करें। अब