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