ধরুন আমাদের দুটি স্ট্রিং s এবং t আছে। আমাদের পরীক্ষা করতে হবে যে s এবং t এর মধ্যে সম্পাদনা দূরত্ব ঠিক এক কি না। এখানে দুটি স্ট্রিং-এর মধ্যে সম্পাদনা মানে এই তিনটির যে কোনো একটি -
- একটি অক্ষর সন্নিবেশ করান
- একটি অক্ষর মুছুন
- একটি অক্ষর প্রতিস্থাপন করুন
সুতরাং, যদি ইনপুটটি s ="hello" t ="heillo" এর মত হয়, তাহলে আউটপুটটি True হবে কারণ t পেতে আমাদের s-এ একটি অক্ষর সন্নিবেশ করতে হবে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- যদি |s এর আকার - t এর আকার |> 1, তারপর
- মিথ্যে ফেরত দিন
- edit_dist_cnt :=0, i :=0, j :=0
- যখন i
- যদি s[i] t[j] এর মত না হয়, তাহলে
- যদি edit_dist_cnt 1 এর মত হয়, তাহলে
- মিথ্যে ফেরত দিন
- যদি s এর সাইজ হয়> t এর সাইজ, তাহলে
- i :=i + 1
- অন্যথায় যখন s এর আকার
- j :=j + 1
- অন্যথায়,
- i :=i + 1, j :=j + 1
- edit_dist_cnt :=edit_dist_cnt + 1
- যদি s[i] t[j] এর মত না হয়, তাহলে
- i :=i + 1, j :=j + 1
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(s, t): if abs(len(s) - len(t)) > 1: return false edit_dist_cnt = 0 i = 0 j = 0 while i < len(s) and j < len(t): if s[i] != t[j]: if edit_dist_cnt == 1: return false if len(s) > len(t): i += 1 elif len(s) < len(t): j += 1 else: i += 1 j += 1 edit_dist_cnt +=1 else: i += 1 j += 1 if i < len(s) or j < len(t): edit_dist_cnt += 1 return edit_dist_cnt == 1 s = "hello" t = "heillo" print(solve(s, t))
ইনপুট
"hello", "heillo"
আউটপুট
True