मान लीजिए कि लोअरकेस अक्षरों का एक स्ट्रिंग S है, ये अक्षर एक ही वर्ण के लगातार समूह बनाते हैं। तो, जब एस की तरह एक स्ट्रिंग "abbxxxxzyy" की तरह है, तो समूह "ए", "बीबी", "xxxx", "z" और "yy" हैं। एक समूह एक बड़ा समूह होगा जब उसमें 3 या अधिक वर्ण हों। हम हर बड़े समूह की शुरुआत और समाप्ति की स्थिति चाहते हैं।
इसलिए, यदि इनपुट "abcdddeeeeaabbbcd" जैसा है, तो आउटपुट [[3,5],[6,9],[12,14]]
होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- उत्तर:=एक नई सूची
- सीसम :=0
- प्रत्येक a, b के लिए लगातार अक्षरों वाले अक्षरों का समूह बनाएं
- जीआरपी:=समूहीकृत आइटम सूची
- यदि जीआरपी का आकार>=3, तो
- उत्तर में (csum,csum + size of grp-1) वाली सूची डालें
- csum :=csum + grp का आकार
- वापसी उत्तर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
from itertools import groupby
class Solution:
def largeGroupPositions(self, S):
ans = []
csum = 0
for a, b in groupby(S):
grp = list(b)
if len(grp) >= 3:
ans.append([csum, csum+len(grp)-1])
csum+=len(grp)
return ans
ob = Solution()
print(ob.largeGroupPositions("abcdddeeeeaabbbcd")) इनपुट
"abcdddeeeeaabbbcd"
आउटपुट
[[3, 5], [6, 9], [12, 14]]