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

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

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

इसलिए, यदि इनपुट s ="aabccddeeffghij" k =2 जैसा है, तो आउटपुट 8 होगा, क्योंकि यहां सबसे लंबा सबस्ट्रिंग "ccddeeff" है, यहां प्रत्येक वर्ण कम से कम 2 बार आता है।

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

  • एक फ़ंक्शन को परिभाषित करें rc() । इसमें पहली बार लगेगा
  • c :=सभी वर्णों और उनकी घटनाओं के साथ एक नक्शा
  • एसीसी:=एक नई सूची
  • उत्तर:=0
  • वैध:=सत्य
  • पहली बार में प्रत्येक x के लिए, करें
    • अगर c[x]
    • वैध ​​:=असत्य
    • उत्तर:=अधिकतम उत्तर और आरसी(एसीसी)
    • एसीसी:=एक नई सूची
  • अन्यथा,
    • एसीसी के अंत में x डालें
  • अगर सही है तो
    • एसीसी का रिटर्न आकार
  • अन्यथा,
    • उत्तर:=अधिकतम उत्तर और आरसी(एसीसी)
    • वापसी उत्तर
  • मुख्य विधि से, निम्न कार्य करें -
  • रिटर्न आरसी (एस के प्रत्येक वर्ण को परिवर्तित करके एक नई सूची)
  • आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

    उदाहरण

    from collections import Counter
    class Solution:
          def solve(self, s, k):
             def rc(lst):
                c = Counter(lst)
                acc = []
                ans = 0
                valid = True
                for x in lst:
                   if c[x] < k:
                      valid = False
                      ans = max(ans, rc(acc))
                      acc = []
                   else:
                      acc.append(x)
                   if valid:
                      return len(acc)
                   else:
                      ans = max(ans, rc(acc))
                   return ans
                return rc(list(s))
    ob = Solution()
    s = "aabccddeeffghij"
    k = 2
    print(ob.solve(s, k))

    इनपुट

    "aabccddeeffghij", 2

    आउटपुट

    8

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

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

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

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

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

      मान लीजिए कि हमारे पास एक स्ट्रिंग है जो हमें सबसे लंबे संभव सबस्ट्रिंग को वापस करना है जिसमें अद्वितीय वर्णों की संख्या k है, यदि सबसे लंबी संभव लंबाई के एक से अधिक सबस्ट्रिंग हैं, तो उनमें से किसी को वापस कर दें। इसलिए, यदि इनपुट s =ppqprqtqtqt, k =3 जैसा है, तो आउटपुट rqtqtqt होगा क्योंकि इसकी