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

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


मान लीजिए हमारे पास एक संख्या k और एक स्ट्रिंग s है, हमें उस सबसे लंबे सबस्ट्रिंग का आकार ढूंढना है जिसमें अधिकतम k विशिष्ट वर्ण हों।

उदाहरण के लिए, यदि इनपुट k = 3 और s = "kolkata" है, तो आउटपुट 4 होगा, क्योंकि 3 विशिष्ट वर्णों वाले दो सबसे लंबे सबस्ट्रिंग "kolk" और "kata" हैं, जिनकी लंबाई 4 है।

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

इस समस्या को हल करने के लिए हम स्लाइडिंग विंडो तकनीक का उपयोग करेंगे:

  • ans := 0, left := 0
  • table := एक नया मैप (वर्णों की गिनती के लिए)
  • right को 0 से s के आकार - 1 तक लूप चलाएं:
    • table[s[right]] := 1 + (table.get(s[right], 0))
    • यदि table का आकार <= k है, तो ans := max(ans, right - left + 1)
    • अन्यथा, जब तक table का आकार > k है:
      • left_char := s[left]
      • यदि table[left_char] == 1 है, तो table से left_char हटाएं
      • अन्यथा, table[left_char] घटाएं
      • left := left + 1
  • ans लौटाएं

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

class Solution:
    def solve(self, k, s):
        ans = 0
        left = 0
        table = {}
        for right in range(len(s)):
            table[s[right]] = table.get(s[right], 0) + 1
            if len(table) <= k:
                ans = max(ans, right - left + 1)
            else:
                while len(table) > k:
                    left_char = s[left]
                    if table[left_char] == 1:
                        table.pop(left_char)
                    else:
                        table[left_char] -= 1
                    left += 1
        return ans

ob = Solution()
k = 3
s = "kolkata"
print(ob.solve(k, s))

इनपुट

"anewcoffeepot"

आउटपुट

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

    मान लीजिए हमारे पास एक असॉर्टेड सरणी है, हमें लगातार तत्वों के सबसे लंबे अनुक्रम की लंबाई ढूंढनी है। उदाहरण के लिए, यदि इनपुट nums = [70, 7, 50, 4, 6, 5] है, तो आउटपुट 4 होगा, क्योंकि सबसे लंबा लगातार अनुक्रम [4, 5, 6, 7] है, इसलिए हम इसकी लंबाई 4 लौटाते हैं। इसे हल करने के लिए हम निम्न चरणों का पाल

  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 :=