मान लीजिए कि हमारे पास एक ही आकार के दो तार s और t हैं, हमें यह जांचना है कि क्या s का कुछ क्रमपरिवर्तन है, मान लीजिए s1, और t का क्रमपरिवर्तन है, मान लीजिए t1, जैसे:s1[i] ≤ t1[i] सभी के लिए 0 i
इसलिए, यदि इनपुट s ="vyx" t ="wzx" जैसा है, तो आउटपुट ट्रू होगा, क्योंकि हमारे पास s1 ="vxy" और t1 ="wxz" हो सकते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- अगर s और t खाली हैं, तो
- सही लौटें
- s :=स्ट्रिंग s को सॉर्ट करें
- t:=स्ट्रिंग t को सॉर्ट करें
- उपयोग() फ़ंक्शन को परिभाषित करें। इसमें s1, s2 लगेगा
- मैं के लिए 0 से s1 के आकार के बीच में, करते हैं
- अगर s1[i]> t1[i], तो
- झूठी वापसी
- अगर s1[i]> t1[i], तो
- सही लौटें
- मुख्य विधि से निम्न कार्य करें -
- यदि उपयोग (s, t) सत्य है, तो
- सही लौटें
- स्वैप एस और टी
- वापसी उपयोग(ओं, टी)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, s, t): if not len(s) or not len(t): return True s = sorted(s) t = sorted(t) def util(s1, t1): for i in range(len(s1)): if s1[i] > t1[i]: return False return True if util(s, t): return True s, t = t, s return util(s, t) ob = Solution() s = "vyx" t = "wzx" print(ob.solve(s, t))
इनपुट
"vyx", "wzx"
आउटपुट
True