मान लीजिए हमारे पास दो स्ट्रिंग्स S और T हैं और वे एक-दूसरे के क्रमपरिवर्तन हैं। मान लीजिए एक ऑपरेशन है जहां हम S में पहले या अंतिम वर्ण को हटाते हैं और इसे स्ट्रिंग में कहीं भी डालते हैं। फिर S को T में बदलने के लिए आवश्यक न्यूनतम ऑपरेशनों की संख्या ढूंढें।
उदाहरण के लिए, यदि इनपुट s = "zyvxw", t = "vwxyz" है, तो आउटपुट 3 होगा।
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- ans := s का आकार, n := s का आकार
- i को 0 से n-1 तक के लिए करें:
- k := 0
- j को i से n-1 तक के लिए करें:
- k को k से t के आकार तक के लिए करें:
- यदि s[j], t[k] के बराबर है, तो ans := min(ans, n - (j - i + 1)), लूप से बाहर निकलें
- k := k + 1
- k को k से t के आकार तक के लिए करें:
- ans वापस करें
उदाहरण
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