কম্পিউটার টিউটোরিয়াল

পাইথনে বড় গোষ্ঠীর অবস্থান (Positions of Large Groups) খুঁজে বের করা


সমস্যা বিবরণ

একটি স্ট্রিং S দেওয়া থাকে যেখানে একই অক্ষরগুলো التوالي গোষ্ঠী (group) তৈরি করে। ৩ বা তার বেশি অক্ষর থাকলে সেটাকে "বড় গোষ্ঠী" বলা হয়। প্রতিটি বড় গোষ্ঠীর শুরু এবং শেষ ইনডেক্স খুঁজে বের করুন।

উদাহরণ

ইনপুট: "abcdddeeeeaabbbcd" → আউটপুট: [[3,5],[6,9],[12,14]]

গোষ্ঠীগুলো: "a"(0), "bb"(1-2), "xxxx"(3-5), "z"(6), "yy"(7-8) → বড় গোষ্ঠী: "xxxx" (3-5), "eeee" (6-9), "bbb" (12-14)।

এলগরিদম

  1. ans = [], csum = 0 (ক্যুমুলেটিভ ইনডেক্স)।
  2. itertools.groupby দিয়ে التوالي অক্ষরগুলো গোষ্ঠী করুন।
  3. প্রতিটি গোষ্ঠীর জন্য:
    • grp = list(group)।
    • যদি len(grp) >= 3 → ans.append([csum, csum + len(grp) - 1])।
    • csum += len(grp)।
  4. ans রিটার্ন করুন।

পাইথন বাস্তবায়ন

from itertools import groupby

class Solution:
    def largeGroupPositions(self, S):
        ans = []
        csum = 0
        for char, group in groupby(S):
            grp = list(group)
            if len(grp) >= 3:
                ans.append([csum, csum + len(grp) - 1])
            csum += len(grp)
        return ans

ob = Solution()
print(ob.largeGroupPositions("abcdddeeeeaabbbcd"))
# আউটপুট: [[3, 5], [6, 9], [12, 14]]

ইনপুট / আউটপুট

ইনপুট: "abcdddeeeeaabbbcd"
আউটপুট: [[3, 5], [6, 9], [12, 14]]
  1. পাইথন রেগুলার এক্সপ্রেশন নামড গ্রুপ কীভাবে ব্যবহার করবেন?

  2. পাইথন রেগুলার এক্সপ্রেশনে groups() মেথডের ব্যবহার

  3. পাইথনে ফাইলের ওয়নার পরিবর্তন করার পদ্ধতি

  4. পাইথনে ডিরেক্টরির ওয়নার পরিবর্তন করার পদ্ধতি