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

পাইথনে দুটি স্ট্রিং থেকে লেক্সিকোগ্রাফিক্যালি সর্বোচ্চ মার্জ খুঁজে বের করার প্রোগ্রাম


মান লিজিয়ে আমাদের দুটি স্ট্রিং আছে s এবং t। আমরা merge নামক একটি স্ট্রিং নিচেরভাবে তৈরি করতে চাই: যতক্ষণ s বা t খালি নয়, নিচের অপশনগুলো থেকে একটি বাছাই করুন:

  • যদি s খালি না হয়, তবে s-এর প্রথম ক্যারেক্টার merge-এ অ্যাপেন্ড করুন এবং s-থেকে মুছে দিন।

  • যদি t খালি না হয়, তবে t-এর প্রথম ক্যারেক্টার merge-এ অ্যাপেন্ড করুন এবং t-থেকে মুছে দিন।

শেষে, আমাদের যে লেক্সিকোগ্রাফিক্যালি সর্বোচ্চ merge তৈরি করা যায় সেটি বের করতে হবে।

যেমন, ইনপুট হলে s = "zxyxx" এবং t = "yzxxx", তবে আউটপুট হবে "zyzxyxxxxx"।

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

  • a := 0, b := 0

  • merge := খালি স্ট্রিং

  • W1 := len(s)

  • W2 := len(t)

  • a < W1 and b < W2 থাকা পর্যন্ত:

    • যদি s[a:] > t[b:] হয়, তবে:

      • merge := merge + s[a]

      • a := a + 1

    • অন্যথায়,

      • merge := merge + t[b]

      • b := b + 1

  • merge + s[a:] + t[b:] রিটার্ন করুন।

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন:

def solve(s, t):
    a = b = 0
    merge = ""
    W1 = len(s)
    W2 = len(t)
    while a < W1 and b < W2:
        if s[a:] > t[b:]:
            merge += s[a]
            a += 1
        else:
            merge += t[b]
            b += 1
    return merge + s[a:] + t[b:]

s = "zxyxx"
t = "yzxxx"
print(solve(s, t))

ইনপুট

"zxyxx", "yzxxx"

আউটপুট

zyzxyxxxxx

  1. পাইথন প্রোগ্রাম অ্যারেতে সবচেয়ে বড় এলিমেন্ট বের করা

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

  3. পাইথনে কোনো সংখ্যা ২-এর ঘাত কিনা চেক করা

  4. পাইথনে অ্যারে থেকে সর্বোচ্চ এলিমেন্ট বের করা