मान लीजिए हमारे पास एक स्ट्रिंग के लिए रोटेशन समूह है जो इसके सभी अद्वितीय रोटेशन को रखता है। यदि इनपुट है "567", तो इसे "675" और "756" में घुमाया जा सकता है और वे सभी एक ही रोटेशन समूह में हैं। अब यदि हमारे पास स्ट्रिंग्स की एक सूची words है, हमें प्रत्येक शब्द को उनके रोटेशन समूह द्वारा समूहित करना है, और समूहों की कुल संख्या ढूंढनी है।
उदाहरण के लिए, यदि इनपुट है words = ["xyz", "ab", "ba", "c", "yzx"], तो आउटपुट होगा 3, क्योंकि तीन रोटेशन समूह हैं: ["xyz", "yzx"], ["ab", "ba"], ["c"]।
हल करने के चरण
s :=एक नया सेट।ct := 0- प्रत्येक
iके लिएwordsमें:- यदि
isमें नहीं है, तोct := ct + 1। jको 0 सेiके आकार तक:temp := i[j:] + i[:j](रोटेशन)।tempको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