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

पायथन का उपयोग करके सबसे लंबे समय तक अच्छे विकल्प खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक स्ट्रिंग s है। हमें s का सबसे लंबा अच्छा विकल्प खोजना है। एक स्ट्रिंग s के लिए, इसे अच्छा कहा जाएगा, जब s में वर्णमाला के प्रत्येक अक्षर के लिए, यह अपरकेस और लोअरकेस दोनों में दिखाई देता है। अगर ऐसे कई सबस्ट्रिंग हैं, तो जल्द से जल्द होने वाली सबस्ट्रिंग लौटाएं।

इसलिए, यदि इनपुट s ="ZbybBbz" जैसा है, तो आउटपुट "bBb" होगा क्योंकि इसमें लोअरकेस और अपरकेस B शामिल हैं।

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

  • cur_max:=-1

  • रेस:=खाली स्ट्रिंग

  • मैं के लिए 0 से s के आकार की सीमा में, ऐसा करें

    • सी:=एस[i]

    • ऊपरी :=एक नया सेट

    • निचला :=एक नया सेट

    • अगर c लोअरकेस में है, तो

      • c को निचले हिस्से में जोड़ें

    • अगर c अपरकेस में है, तो

      • c को अपरकेस में जोड़ें लेकिन इसे लोअरकेस में बदलने से पहले

    • j के लिए i+1 से लेकर s के आकार की श्रेणी में, करें

      • सी:=एस [जे]

      • अगर c लोअरकेस में है, तो

        • c को निचले हिस्से में जोड़ें

      • अगर c अपरकेस में है, तो

        • c को अपरकेस में जोड़ें लेकिन इसे लोअरकेस में बदलने से पहले

      • यदि ऊपरी निचले के समान है, तो

        • अगर j-i> cur_max, तो

          • cur_max :=j-i

          • res:=s का सबस्ट्रिंग [इंडेक्स i से j+1 तक]

  • रिटर्न रेस

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

उदाहरण

def solve(s):
   cur_max= -1
   res=""
   for i in range(len(s)):
      c = s[i]
      upper = set()
      lower = set()
      if c.islower():
         lower.add(c)
      if c.isupper():
         upper.add(c.lower())
      for j in range(i+1,len(s)):
         c = s[j]
         if c.islower():
            lower.add(c)
         if c.isupper():
            upper.add(c.lower())
         if upper == lower:
            if j-i>cur_max:
               cur_max = j-i
               res = s[i:j+1]
   return res
s = "ZbybBbz"
print(solve(s))

इनपुट

"ZbybBbz"

आउटपुट

bBb

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

    मान लीजिए कि हमारे पास एक स्ट्रिंग है जहां प्रत्येक वर्ण को क्रमबद्ध किया गया है और हमारे पास एक संख्या k भी है, हमें सबसे लंबी सबस्ट्रिंग की लंबाई इस तरह ढूंढनी होगी कि प्रत्येक वर्ण कम से कम k बार आए। इसलिए, यदि इनपुट s =aabccddeeffghij k =2 जैसा है, तो आउटपुट 8 होगा, क्योंकि यहां सबसे लंबा सबस्ट

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

    मान लीजिए कि हमारे पास एक स्ट्रिंग S है। हमें S में सबसे लंबे पैलिंड्रोमिक सबस्ट्रिंग की लंबाई का पता लगाना है। हम मान रहे हैं कि स्ट्रिंग S की लंबाई 1000 है। इसलिए यदि स्ट्रिंग BABAC है, तो सबसे लंबा पैलिंड्रोमिक सबस्ट्रिंग BAB है। और लंबाई 3 है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  1. पायथन में सबसे लंबा पालिंड्रोमिक सबस्ट्रिंग

    मान लीजिए कि हमारे पास एक स्ट्रिंग S है। हमें S में सबसे लंबी पैलिंड्रोमिक सबस्ट्रिंग ढूंढनी है। हम मान रहे हैं कि स्ट्रिंग S की लंबाई 1000 है। इसलिए यदि स्ट्रिंग BABAC है , तो सबसे लंबा पैलिंड्रोमिक सबस्ट्रिंग “BAB” है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे स्ट्रिंग की लंबाई के समान क्रम