मान लीजिए हमारे पास दो लोअरकेस स्ट्रिंग्स s, और t हैं, हमें जांचना है कि क्या हम s के प्रत्येक अक्षर के लिए दूसरे अक्षर (हो सकता है वही अक्षर) में एक 1-to-1 मैपिंग बना सकते हैं जैसे कि s को t में मैप किया जा सके। (वर्णों का क्रम नहीं बदलेगा)।
उदाहरण के लिए, यदि इनपुट है s = "papa", t = "lili", तो आउटपुट होगा True, क्योंकि हम यह मैपिंग बना सकते हैं: "p" से "l", "a" -> "i"
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
- s_dict := एक नया मैप
- t_dict := एक नया मैप
- i के लिए 0 से s के आकार और t के आकार के न्यूनतम तक की रेंज में, करें
- यदि s[i], s_dict में मौजूद है, तो
- यदि s_dict[s[i]], t[i] के समान नहीं है, तो
- False वापस करें
- यदि s_dict[s[i]], t[i] के समान नहीं है, तो
- अन्यथा जब t[i], t_dict में मौजूद है, तो
- यदि t_dict[t[i]], s[i] के समान नहीं है, तो
- False वापस करें
- यदि t_dict[t[i]], s[i] के समान नहीं है, तो
- अन्यथा,
- s_dict[s[i]] := t[i]
- t_dict[t[i]] := s[i]
- यदि s[i], s_dict में मौजूद है, तो
- True वापस करें
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
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