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

পাইথনে তিনটি স্ট্রিং-এর সর্বোচ্চ দৈর্ঘ্যের কমন সাবসিকোয়েন্স খুঁজে বের করার প্রোগ্রাম

তিনটি স্ট্রিং s1, s2, s3 দেওয়া আছে। আমাদের তিনটি স্ট্রিং-এ কমন এমন সবচেয়ে বড় সাবসিকোয়েন্সের দৈর্ঘ্য বের করতে হবে।

উদাহরণস্বরূপ, s1 = "ababchemxde", s2 = "pyakcimde", s3 = "oauctime" হলে আউটপুট ৪, কারণ "acme" সবচেয়ে বড় কমন সাবসিকোয়েন্স।

সমাধানের পদ্ধতি (৩D ডাইনামিক প্রোগ্রামিং)

  1. m, n, o = তিনটি স্ট্রিং-এর দৈর্ঘ্য।
  2. dp = আকার (m+1) x (n+1) x (o+1) এর ৩D অ্যারে, সব ০ দিয়ে ইনিশিয়ালাইজড।
  3. ট্রিপল নেস্টেড লুপ i=1..m, j=1..n, k=1..o:
    • যদি s1[i-1] == s2[j-1] == s3[k-1], তবে dp[i][j][k] = 1 + dp[i-1][j-1][k-1]।
    • অন্যথায়, dp[i][j][k] = max(dp[i-1][j][k], dp[i][j-1][k], dp[i][j][k-1])।
  4. dp[m][n][o] রিটার্ন করুন।

পাইথন কোড উদাহরণ

class Solution:
    def solve(self, s1, s2, s3):
        m, n, o = len(s1), len(s2), len(s3)
        dp = [[[0]*(o+1) for _ in range(n+1)] for __ in range(m+1)]
        for i in range(1, m+1):
            for j in range(1, n+1):
                for k in range(1, o+1):
                    if s1[i-1] == s2[j-1] == s3[k-1]:
                        dp[i][j][k] = 1 + dp[i-1][j-1][k-1]
                    else:
                        dp[i][j][k] = max(dp[i-1][j][k], dp[i][j-1][k], dp[i][j][k-1])
        return dp[m][n][o]

ob = Solution()
s1 = "ababchemxde"
s2 = "pyakcimde"
s3 = "oauctime"
print(ob.solve(s1, s2, s3))

ইনপুট

"ababchemxde", "pyakcimde", "oauctime"

আউটপুট

4
  1. পাইথনে স্বতন্ত্র উপাদান সম্বলিত সর্বোচ্চ দীর্ঘ সাবলিস্টের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে দুটি স্ট্রিং থেকে সর্বোচ্চ অ্যানাগ্রাম সাবসিকোয়েন্সের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে স্ট্রিংয়ে সর্বোচ্চ সমবায়ন ব্র্যাকেট সাবসিকোয়েন্সের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে স্ট্রিং তালিকা থেকে লংগেস্ট কমন প্রিফিক্স খুঁজে বের করার প্রোগ্রাম