কম্পিউটার

পাইথনে বড় গ্রুপের অবস্থান


ধরুন ছোট হাতের অক্ষরগুলির একটি স্ট্রিং 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]]

  1. আমরা কিভাবে পাইথন রেগুলার এক্সপ্রেশন নামের গ্রুপ ব্যবহার করব?

  2. পাইথনে রেগুলার এক্সপ্রেশনে গ্রুপ() পদ্ধতি কি?

  3. পাইথন ব্যবহার করে একটি ফাইলের মালিক কিভাবে পরিবর্তন করবেন?

  4. পাইথন ব্যবহার করে একটি ডিরেক্টরির মালিক কিভাবে পরিবর্তন করবেন?