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

পাইথনে দুইটির বেশি স্ট্রিং থেকে লংগেস্ট কমন সাবস্ট্রিং বের করা

লংগেস্ট কমন সাবস্ট্রিং অ্যালগরিদমের সাধারণ ডাইনামিক প্রোগ্রামিং ইমপ্লিমেন্টেশন O(nm) টাইমে চলে। নিচে লংগেস্ট কমন সাবস্ট্রিং অ্যালগরিদমের একটি ইমপ্লিমেন্টেশন দেওয়া হলো:

উদাহরণ

def longest_common_substring(s1, s2):
    m = [[0] * (1 + len(s2)) for i in range(1 + len(s1))]
    longest, x_longest = 0, 0
    for x in range(1, 1 + len(s1)):
        for y in range(1, 1 + len(s2)):
            if s1[x - 1] == s2[y - 1]:
                m[x][y] = m[x - 1][y - 1] + 1
                if m[x][y] > longest:
                    longest = m[x][y]
                    x_longest = x
            else:
                m[x][y] = 0
    return s1[x_longest - longest: x_longest]

print(longest_common_substring('wellbeing', 'welcome'))

আউটপুট

wel

এটি কীভাবে কাজ করে:

  • প্রাথমিকতে, আমরা কাউন্টার অ্যারে (m) সব ০ দিয়ে ইনিțialাইজ করি।
  • ১ম সারি থেকে শুরু করে, আমরা স্ট্রিং s1-এর প্রথম ক্যারেক্টারকে s2-এর সব ক্যারেক্টারদিয়ে কমপেয়ার করি।
  • s2-এ ট্রাভার্স করার সময়, যদি s1-এর ক্যারেক্টারের সাথে ম্যাচ করে, তবে কাউন্টার ইনক্রিমেন্ট করি। এটি m[i][j]-এ সেভ হবে যা ডায়াগোনালি একটা নিচে থাকে।

শেষে আমরা লুপে ক্যালকুলেট করা ইনডেক্স দিয়ে লংগেস্ট সাব-স্ট্রিং রিটার্ন করি।

  1. পাইথনে গ্রাফে সোর্স থেকে k-এর চেয়ে বড় পথ আছে কিনা চেক করা

  2. পাইথনে দিয়ে k সংখ্যক یونিক ক্যারেক্টার সম্বলিত দীর্ঘতম সাবস্ট্রিং খুঁজে বের করা

  3. দুই স্ট্রিং থেকে অনকমন ওয়ার্ড বের করার পাইথন প্রোগ্রাম

  4. দুই সর্টেড অ্যারে থেকে নিকটতম জোড়া বের করার পাইথন প্রোগ্রাম