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

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

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

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

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

  • उत्तर:=0, बाएँ:=0

  • तालिका:=एक नया नक्शा

  • के लिए दायीं ओर 0 से s -1 के आकार की सीमा में है, do

    • तालिका [एस [दाएं]]:=1 + (एस [दाएं] यदि मौजूद है अन्यथा 0)

    • यदि तालिका का आकार <=k, तो

      • उत्तर:=अधिकतम उत्तर और (दाएं - बाएं + 1)

    • अन्यथा,

      • जबकि टेबल का आकार> k, करें

        • left_char :=s[बाएं]

        • यदि तालिका [बाएं_चार] 1 के समान है, तो

          • तालिका से left_char−th तत्व हटाएं

        • अन्यथा,

          • तालिका [बाएं_चार]:=तालिका [बाएं_चार] - 1

        • बाएँ :=बाएँ + 1

  • वापसी उत्तर

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

उदाहरण

class Solution:
   def solve(self, k, s):
      ans = 0
      left = 0
      table = {}
      for right in range(0, 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. पायथन में लगातार सबसे लंबे अनुक्रम की लंबाई खोजने का कार्यक्रम

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

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

    मान लीजिए कि हमारे पास दो लोअरकेस स्ट्रिंग्स S और T हैं, तो हमें सबसे लंबे एनाग्राम अनुक्रम की लंबाई ज्ञात करनी होगी। इसलिए, यदि इनपुट S =helloworld, T =hellolorld जैसा है, तो आउटपुट 8 होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - सी:=एक नया नक्शा, डी:=एक नया नक्शा मैं के लिए 0 से

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

    मान लीजिए कि हमारे पास एक स्ट्रिंग s है, हमें समान वर्णों वाले सबसे लंबे सबस्ट्रिंग की लंबाई ज्ञात करनी है। इसलिए, यदि इनपुट abbbaccabbba जैसा है, तो आउटपुट 4 होगा, क्योंकि इसमें लगातार चार बी होते हैं। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - यदि s का आकार 0 है, तो वापसी 0 s :=s रिक्त