ধরুন আমাদের একটি স্ট্রিং এর জন্য ঘূর্ণন গোষ্ঠী রয়েছে যা তার অনন্য ঘূর্ণনগুলির সমস্ত ধারণ করে। যদি ইনপুটটি "567" এর মত হয় তবে এটি "675" এবং "756" এ ঘোরানো যেতে পারে এবং তারা সব একই ঘূর্ণন গোষ্ঠীতে থাকে। এখন যদি আমাদের কাছে স্ট্রিং শব্দের একটি তালিকা থাকে, তাহলে আমাদের প্রতিটি শব্দকে তাদের ঘূর্ণন গোষ্ঠী অনুসারে গোষ্ঠীবদ্ধ করতে হবে এবং মোট গোষ্ঠীর সংখ্যা বের করতে হবে।
সুতরাং, যদি ইনপুটটি শব্দের মত হয় =["xyz", "ab", "ba", "c", "yzx"], তাহলে আউটপুট হবে 3, কারণ তিনটি ঘূর্ণন গোষ্ঠী রয়েছে − ["xyz", "yzx"], ["ab", "ba"], ["c"]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- s:=একটি নতুন সেট
- ct:=0
- শব্দে প্রতিটি i এর জন্য, করুন
- যদি আমি s-এ না থাকি, তাহলে
- ct :=ct + 1
- 0 থেকে i এর মাপের পরিসরে j-এর জন্য
- করুন
- temp :=i[সূচী j থেকে শেষ পর্যন্ত] i এর সাবস্ট্রিং [শুরু থেকে j])
- s-এ temp সন্নিবেশ করুন
- যদি আমি s-এ না থাকি, তাহলে
- সিটি ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, words): s=set() ct=0 for i in words: if i not in s: ct+=1 for j in range(len(i)): s.add(i[j:]+i[:j]) return ct ob = Solution() print(ob.solve(["xyz", "ab", "ba", "c", "yzx"]))
ইনপুট
["xyz", "ab", "ba", "c", "yzx"]
আউটপুট
3