मान लीजिए कि हमारे पास दो लोअरकेस स्ट्रिंग्स हैं, और t हमें यह जांचना है कि क्या हम s में प्रत्येक अक्षर के लिए एक 1-टू-1 मैपिंग बना सकते हैं (शायद एक ही अक्षर) जैसे कि s को t में मैप किया जा सकता है। (अक्षरों का क्रम नहीं बदला जाएगा)।
इसलिए, यदि इनपुट s ="papa", t ="lili" जैसा है, तो आउटपुट ट्रू होगा, क्योंकि हम यह मैपिंग बना सकते हैं:"p" से "l", "a" -> "i"पी>
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- s_dict :=एक नया नक्शा
- t_dict :=एक नया नक्शा
- i के लिए 0 से न्यूनतम s आकार और t आकार की श्रेणी में, करें
- अगर s[i] s_dict में मौजूद है, तो
- यदि s_dict[s[i]] t[i] के समान नहीं है, तो
- झूठी वापसी
- यदि s_dict[s[i]] t[i] के समान नहीं है, तो
- अन्यथा जब t[i] t_dict में मौजूद हो, तब
- यदि t_dict[t[i]] s[i] के समान नहीं है, तो
- झूठी वापसी
- यदि t_dict[t[i]] s[i] के समान नहीं है, तो
- अन्यथा,
- s_dict[s[i]] :=t[i]
- t_dict[t[i]] :=s[i]
- अगर s[i] s_dict में मौजूद है, तो
- सही लौटें
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, s, t): s_dict = {} t_dict = {} for i in range(min(len(s), len(t))): if s[i] in s_dict: if s_dict[s[i]] != t[i]: return False elif t[i] in t_dict: if t_dict[t[i]] != s[i]: return False else: s_dict[s[i]] = t[i] t_dict[t[i]] = s[i] return True ob = Solution() print(ob.solve("papa", "lili"))
इनपुट
"papa", "lili"
आउटपुट
True