मान लीजिए S लोअरकेस अक्षरों की एक स्ट्रिंग है, ये अक्षर समान वर्णों के लगातार समूह बनाते हैं। उदाहरण के लिए, "abbxxxxzyy" स्ट्रिंग में समूह "a", "bb", "xxxx", "z" और "yy" हैं। एक समूह बड़ा समूह होगा जब इसमें 3 या अधिक वर्ण हों। हमें हर बड़े समूह की प्रारंभिक और अंतिम स्थितियां चाहिए।
उदाहरण के लिए, यदि इनपुट "abcdddeeeeaabbbcd" है, तो आउटपुट [[3,5],[6,9],[12,14]] होगा।
हल करने के चरण
- ans := एक नई सूची
- csum := 0
- लगातार अक्षरों के समूह बनाने के लिए प्रत्येक a, b के लिए:
- grp := समूहीकृत आइटम की सूची
- यदि grp का आकार >= 3, तो:
- (csum, csum + grp का आकार - 1) वाली सूची को ans में डालें
- csum := csum + grp का आकार
- ans वापस करें
उदाहरण
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]]