ধরুন আমাদের দুটি স্ট্রিং S এবং T আছে এবং তারা একে অপরের পারমুটেশন। ধরুন এমন একটি অপারেশন আছে যেখানে আমরা S-এর প্রথম বা শেষ অক্ষরটি সরিয়ে ফেলি এবং স্ট্রিং-এর যেকোনো জায়গায় এটি সন্নিবেশ করি। তারপর S কে T এ রূপান্তর করার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক ক্রিয়াকলাপ খুঁজুন।
সুতরাং, যদি ইনপুটটি s ="zyvxw" t ="vwxyz" এর মতো হয়, তাহলে আউটপুট হবে 3, যেমন এই অপারেশনগুলি হল:"w" সরান এবং "zyvwx" পেতে "v" এর পরে এটি প্রবেশ করান "z" সরান। এবং "yvwxz" পেতে "x" এর পরে ঢোকান "y" সরান এবং "vwxyz" পেতে "x" এর পরে ঢোকান।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
উত্তর :=s এর আকার, n :=s এর আকার
-
0 থেকে n-1 রেঞ্জের জন্য, করুন
-
k :=0
-
i থেকে n-1 রেঞ্জের মধ্যে j এর জন্য, করুন
-
k এর জন্য k থেকে t এর আকারের মধ্যে, করুন
-
যদি s[j] t[k] এর মত হয়, তাহলে
-
উত্তর :=সর্বনিম্ন উত্তর এবং n - (j - i + 1)
-
লুপ থেকে বেরিয়ে আসুন
-
-
-
k :=k + 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