मान लीजिए कि हमारे पास एक स्ट्रिंग है जहां प्रत्येक वर्ण को क्रमबद्ध किया गया है और हमारे पास एक संख्या k भी है, हमें सबसे लंबी सबस्ट्रिंग की लंबाई इस तरह ढूंढनी होगी कि प्रत्येक वर्ण कम से कम k बार आए।
इसलिए, यदि इनपुट s ="aabccddeeffghij" k =2 जैसा है, तो आउटपुट 8 होगा, क्योंकि यहां सबसे लंबा सबस्ट्रिंग "ccddeeff" है, यहां प्रत्येक वर्ण कम से कम 2 बार आता है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक फ़ंक्शन को परिभाषित करें rc() । इसमें पहली बार लगेगा
- c :=सभी वर्णों और उनकी घटनाओं के साथ एक नक्शा
- एसीसी:=एक नई सूची
- उत्तर:=0
- वैध:=सत्य
- पहली बार में प्रत्येक x के लिए, करें
- अगर c[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