কম্পিউটার টিউটোরিয়াল

পাইথনে দুটি স্ট্রিং-এর এডিট ডিস্ট্যান্স (Edit Distance) এক কিনা যাচাই করা

ধরি আমাদের দুটি স্ট্রিং s এবং t আছে। আমাদের যাচাই করতে হবে s এবং t-এর এডিট ডিস্ট্যান্স ঠিক এক কিনা। এডিট ডিস্ট্যান্স বলতে বুঝায়:

  • একটি ক্যারেক্টার ইনসার্ট করা
  • একটি ক্যারেক্টার ডিলিট করা
  • একটি ক্যারেক্টার রিপ্লেস করা

উদাহরণস্বরূপ, s = "hello" এবং t = "heillo" হলে আউটপুট হবে True, কারণ s-এ একটি ক্যারেক্টার ইনসার্ট করলে t হয়।

সমাধানের ধাপসমূহ

  • যদি |len(s) - len(t)| > 1, তবে false রিটার্ন করুন
  • edit_dist_cnt := 0, i := 0, j := 0
  • যতক্ষণ i < len(s) এবং j < len(t):
    • যদি s[i] != t[j]:
      • যদি edit_dist_cnt == 1, তবে false রিটার্ন করুন
      • যদি len(s) > len(t), তবে i বাড়ান
      • যদি len(s) < len(t), তবে j বাড়ান
      • অন্যথায় i, j উভয় বাড়ান
      • edit_dist_cnt বাড়ান
    • অন্যথায় i, j উভয় বাড়ান
  • যদি i < len(s) বা j < len(t), তবে edit_dist_cnt বাড়ান
  • edit_dist_cnt == 1 হলে true, অন্যথায় false রিটার্ন করুন

উদাহরণ

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
  1. পাইথনে বাইনারি ট্রিতে দুটি নোডের মধ্যকার দূরত্ব খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে দুটি স্ট্রিংয়ের মাঝপথে লেক্সিকোগ্রাফিক্যালি একটি স্ট্রিং খুঁজুন

  3. পাইথনে দুটি ট্রায়্যাঙ্গেলের কনগ্রুয়েন্সি চেক করার প্রোগ্রাম

  4. পাইথন প্রোগ্রাম: দুটি লিস্টে কমপক্ষে একটি কমন এলিমেন্ট আছে কিনা চেক করা