মনে করুন S এবং T দুটি স্ট্রিং যা একে অপরের পারমুটেশন। একটি অপারেশন আছে যেখানে S-এর প্রথম বা শেষ ক্যারেক্টার মুছে স্ট্রিং-এ যেকোনো জায়গায় ইনসার্ট করা যায়। S কে T-তে রূপান্তর করার জন্য ন্যূনতম অপারেশন সংখ্যা খুঁজে বের করতে হবে।
উদাহরণস্বরূপ, s = "zyvxw", t = "vwxyz" হলে আউটপুট হবে ৩।
সমাধানের ধাপসমূহ
- 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))
- লুপ থেকে বের হোন
- যদি s[j] == t[k], তবে
- 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