मान लीजिए कि हमारे पास दो तार S और T हैं और वे एक दूसरे के क्रमपरिवर्तन हैं। मान लीजिए कि एक ऑपरेशन है जहां हम एस में पहले या आखिरी अक्षर को हटाते हैं और इसे स्ट्रिंग में कहीं भी डालते हैं। फिर S को T में बदलने के लिए आवश्यक न्यूनतम संक्रियाएँ ज्ञात कीजिए।
इसलिए, यदि इनपुट s ="zyvxw" t ="vwxyz" जैसा है, तो आउटपुट 3 होगा, क्योंकि ये ऑपरेशन हैं:"w" को हटा दें और "zyvwx" प्राप्त करने के लिए "v" के बाद डालें "z" निकालें। और इसे "x" के बाद "yvwxz" प्राप्त करने के लिए डालें "y" निकालें और "vwxyz" प्राप्त करने के लिए इसे "x" के बाद डालें।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
उत्तर:=s का आकार, n:=s का आकार
-
मेरे लिए 0 से n-1 की सीमा में, करें
-
कश्मीर:=0
-
j के लिए i से n-1 तक की श्रेणी में, करें
-
k की श्रेणी में k से t के आकार के लिए, करें
-
अगर s[j] t[k] के समान है, तो
-
उत्तर:=न्यूनतम उत्तर और n - (j - i + 1)
-
लूप से बाहर आएं
-
-
-
कश्मीर:=के + 1
-
-
वापसी उत्तर
-
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, s, t): ans = n = len(s) for i in range(n): k = 0 for j in range(i, n): for k in range(k, len(t)): if s[j] == t[k]: ans = min(ans, n - (j - i + 1)) break k += 1 return ans ob = Solution() s = "zyvxw" t = "vwxyz" print(ob.solve(s, t))
इनपुट
"zyvxw", "vwxyz"
आउटपुट
5