ধরুন ছোট হাতের অক্ষরগুলির একটি স্ট্রিং S আছে, এই অক্ষরগুলি একই অক্ষরের পরপর গ্রুপ তৈরি করে। সুতরাং, যখন S এর মত একটি স্ট্রিং হয় "abbxxxxzyy" এর মত "a", "bb", "xxxx", "z" এবং "yy" গ্রুপ থাকে। একটি গ্রুপ একটি বড় গ্রুপ হবে যখন এতে 3 বা তার বেশি অক্ষর থাকবে। আমরা প্রতিটি বড় গ্রুপের শুরু এবং শেষ অবস্থান চাই।
সুতরাং, যদি ইনপুট "abcdddeeeeaabbbcd" এর মত হয়, তাহলে আউটপুট হবে [[3,5],[6,9],[12,14]]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- উত্তর :=একটি নতুন তালিকা
- csum :=0
- প্রতিটি a, b-এর জন্য পরপর অক্ষর সহ অক্ষরগুলির গ্রুপ তৈরি করুন, করুন
- grp :=দলবদ্ধ আইটেম তালিকা
- যদি grp>
=3 এর আকার হয়, তাহলে
- উত্তরগুলিতে (csum,csum + 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]]