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

Python-এ চাংকড প্যালিনড্রোম ডিকম্পোজিশনের সর্বোচ্চ দৈর্ঘ্য বের করার প্রোগ্রাম


মনে করুন আমাদের কাছে একটি টেক্সট আছে। আমাদের সর্বোচ্চ সম্ভাব্য k বের করতে হবে যাতে a[1], a[2], ..., a[k] অস্তিত্ব থাকে যাতে: প্রতিটি a[i] একটি নন-ব্ল্যাঙ্ক স্ট্রিং। এবং তাদের কনক্যাটেনেশন a[1] + a[2] + ... + a[k] দেওয়া টেক্সটের সমান। 1 থেকে k রেঞ্জের সব i-এর জন্য, a[i] = a[{k+1 - i}]।

সুতরাং, যদি ইনপুট হয় text = "antaprezatepzapreanta", তবে আউটপুট হবে 11 কারণ আমরা এটিকে এভাবে ভাগ করতে পারি "a|nt|a|pre|za|tpe|za|pre|a|nt|a"।

এটি সমাধান করতে আমরা নিচের ধাপগুলো অনুসরণ করব −

  • counter := 0

  • i := 1, j := text-এর আকার - 1

  • ic := 0, jc := text-এর আকার

  • যতক্ষণ i <= j, করুন

    • যদি text[ic থেকে i-1] সাবস্ট্রিং text[j থেকে jc-1] সাবস্ট্রিং-এর সমান হয়, তবে

      • counter := counter + 2

      • ic := i

      • jc := j

    • i := i + 1

    • j := j - 1

  • যদি ic != jc হয়, তবে

    • counter := counter + 1

  • counter রিটার্ন করুন

উদাহরণ

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশন দেখুন

def solve(text):
    counter = 0
    i, j = 1, len(text) - 1
    ic, jc = 0, len(text)
    while i <= j:
        if text[ic:i] == text[j:jc]:
            counter += 2
            ic = i
            jc = j
        i += 1
        j -= 1
    if ic != jc:
        counter += 1
    return counter

text = "antaprezatepzapreanta"
print(solve(text))

ইনপুট

[3,4,5,2,1,7,3,4,7], 3

আউটপুট

11

  1. পাইথনে ওয়ার্ড অ্যারে-তে সর্বোচ্চ দৈর্ঘ্যের প্রিফিক্স সিকোয়েন্স খুঁজে বের করার প্রোগ্রাম

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

  3. পাইথনে '?' রিপ্লেস করে 'a' দিয়ে শুরু হওয়া সর্বোচ্চ কনsekutিভ ইনক্রিজিং সাবস্ট্রিং খুঁজে বের করার প্রোগ্রাম

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