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

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


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

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

हल करने के चरण

  • cur_max := -1

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

  • i को 0 से s के आकार तक की रेंज में लिए करें

    • c := s[i]

    • upper := एक नया सेट

    • lower := एक नया सेट

    • यदि c लोअरकेस में है, तो

      • c को lower में जोड़ें

    • यदि c अपरकेस में है, तो

      • c को लोअरकेस में बदलकर upper में जोड़ें

    • j को i+1 से s के आकार तक की रेंज में लिए करें

      • c := s[j]

      • यदि c लोअरकेस में है, तो

        • c को lower में जोड़ें

      • यदि c अपरकेस में है, तो

        • c को लोअरकेस में बदलकर upper में जोड़ें

      • यदि upper, lower के समान है, तो

        • यदि j-i > cur_max, तो

          • cur_max := j-i

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

  • res वापस करें

उदाहरण

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 बार आने वाले वर्णों वाले सबसे लंबे सबस्ट्रिंग की लंबाई खोजने का प्रोग्राम

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

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

    मान लीजिए हमारे पास एक स्ट्रिंग S है। हमें S में सबसे लंबे पैलिंड्रोमिक सबस्ट्रिंग की लंबाई ढूंढनी है। हम मान रहे हैं कि स्ट्रिंग S की लंबाई 1000 है। उदाहरण के लिए, यदि स्ट्रिंग BABAC है, तो सबसे लंबा पैलिंड्रोमिक सबस्ट्रिंग BAB है और इसकी लंबाई 3 है।समाधान दृष्टिकोण (डायनामिक प्रोग्रामिंग)इस समस्या

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

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