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

पायथन में सम स्वर गणना वाले सबसे लंबे सबस्ट्रिंग की लंबाई खोजने का प्रोग्राम


मान लीजिए हमारे पास एक स्ट्रिंग s (लोअरकेस) है, हमें उस सबसे लंबे सबस्ट्रिंग की लंबाई ढूंढनी है जहां प्रत्येक स्वर (vowel) सम संख्या में आता हो।

उदाहरण के लिए, यदि इनपुट s = "anewcoffeepot" है, तो आउटपुट 10 होगा, क्योंकि सबस्ट्रिंग "wcoffeepot" में दो स्वर 'o' और 'e' हैं, और दोनों दो-दो बार आते हैं।

समाधान दृष्टिकोण

इस समस्या को हल करने के लिए हम बिटमास्क और प्रीफिक्स मैप का उपयोग करेंगे:

  • vowels := एक मैप जो स्वरों को संख्यात्मक मान देता है: {a:0, e:1, i:2, o:3, u:4}
  • prefix := एक खाली मैप जिसमें (0, -1) की-वैल्यू पेयर डालें
  • mask := 0, n := s का आकार, res := 0
  • i को 0 से n-1 तक लूप चलाएं:
    • यदि s[i] स्वर है, तो mask := mask XOR (2^vowels[s[i]])
    • यदि mask prefix में नहीं है, तो prefix[mask] := i
    • अन्यथा, res := max(res, i - prefix[mask])
  • res लौटाएं

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

class Solution:
    def solve(self, s):
        vowels = {"a": 0, "e": 1, "i": 2, "o": 3, "u": 4}
        prefix = {0: -1}
        mask = 0
        n = len(s)
        res = 0
        for i in range(n):
            if s[i] in vowels:
                mask ^= 1 << vowels[s[i]]
            if mask not in prefix:
                prefix[mask] = i
            else:
                res = max(res, i - prefix[mask])
        return res

ob = Solution()
s = "anewcoffeepot"
print(ob.solve(s))

इनपुट

"anewcoffeepot"

आउटपुट

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

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

  1. - पायथन में सबसे लंबी एनाग्राम उप-अनुक्रम की लंबाई खोजने का प्रोग्राम

    मान लीजिए हमारे पास दो लोअरकेस स्ट्रिंग्स S और T हैं, हमें सबसे लंबी एनाग्राम उप-अनुक्रम की लंबाई ढूंढनी है। उदाहरण के लिए, यदि इनपुट S = helloworld, T = hellorld है, तो आउटपुट 8 होगा। इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे: c := एक नया मैप, d := एक नया मैप। i को 0 से len(a) - 1 तक लूप म

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

    मान लीजिए हमारे पास एक स्ट्रिंग s है, हमें समान वर्णों वाले सबसे लंबे सबस्ट्रिंग की लंबाई ढूंढनी है। उदाहरण के लिए, यदि इनपुट abbbaccabbbba है, तो आउटपुट 4 होगा, क्योंकि चार लगातार b हैं। इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे: यदि s का आकार 0 है, तो 0 वापस करें s := s + खाली स्थान ct :=