मान लीजिए एक स्ट्रिंग के लिए रोटेशन ग्रुप उसकी सभी अद्वितीय रोटेशन को धारण करता है। यदि इनपुट है, "567" तो इसे "675" और "756" में घुमाया जा सकता है और वे सभी एक ही रोटेशन ग्रुप में हैं। अब यदि हमारे पास words नामक स्ट्रिंग्स की एक सूची है, हमें प्रत्येक शब्द को उनके रोटेशन ग्रुप द्वारा समूहित करना है, और ग्रुप की कुल संख्या ढूंढनी है।
उदाहरण के लिए, यदि इनपुट है words = ["xyz", "ab", "ba", "c", "yzx"], तो आउटपुट होगा 3, क्योंकि तीन रोटेशन ग्रुप हैं - ["xyz", "yzx"], ["ab", "ba"], ["c"]।
इसे हल करने के लिए, हम निम्नলिखিত चरणों का पालন करेंगे:
- s := एक नया सेट
- ct := 0
- words में प्रत्येक i के लिए, करें
- यदि i, s में नहीं है, तो
- ct := ct + 1
- j के लिए 0 से i के आकार तक की रेंज में, करें
- temp := i[इंडेक्स j से अंत तक] का सबस्ट्रिंग जोड़ें i [शुरुआत से j तक] का सबस्ट्रिंग
- temp को s में डालें
- यदि i, s में नहीं है, तो
- ct वापस करें
বेहतर বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখুন:
উদাহরণ
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