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

পাইথনে দুটি স্ট্রিং স্প্লিট করে প্যালিনড্রোম বানानेার প্রোগ্রাম


মান লিজিয়ে দুটি স্ট্রিং আছে a এবং b যাদের দৈর্ঘ্য সমান। আমরা একটি ইন্ডেক্স বাছাই করব এবং উভয় স্ট্রিংকেই সেটি স্প্লিট করব, a-কে a_pref এবং a_suff-এ (a = a_pref + a_suff), এবং b-কে b_pref এবং b_suff-এ (b = b_pref + b_suff)। চেক করুন a_pref + b_suff অথবা b_pref + a_suff প্যালিনড্রোম কিনা। (যেকোনো স্প্লিট খালি স্ট্রিং হতে পারে)।

যেমন, ইনপুট হলে a = "pqrst", b = "turqp", তবে আউটপুট হবে True কারণ a-কে ["pq", "rst"] এবং b-কে ["tu", "rqp"] স্প্লিট করলে a_pref + b_suff = "pqrqp" যা একটি প্যালিনড্রোম।

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

  • [(a,b), (b,a)] জোড়া দুটির জন্য:

    • i := 0, j := len(x) - 1

    • x[i] == y[j] and i < len(x) and j > 0 থাকা পর্যন্ত: i += 1, j -= 1

    • midx := x[i:j+1], midy := y[i:j+1]

    • যদি midx বা midy প্যালিনড্রোম হয়, তবে True রিটার্ন করুন।

  • False রিটার্ন করুন।

উদাহরণ

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

def solve(a, b):
    for x, y in [[a, b], [b, a]]:
        i, j = 0, len(x) - 1
        while x[i] == y[j] and i < len(x) and j > 0:
            i += 1
            j -= 1
        midx = x[i:j+1]
        midy = y[i:j+1]
        if (midx == midx[::-1] or midy == midy[::-1]):
            return True
    return False

a = "pqrst"
b = "turqp"
print(solve(a, b))

ইনপুট

"pqrst", "turqp"

আউটপুট

True

  1. পাইথনে দুটি প্লাট সাইড-বাই-সাইড তৈরি করার পদ্ধতি

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

  3. পাইথন ৩.x-এ Counter() ব্যবহার করে দুটি স্ট্রিংকে অ্যানাগ্রাম বানাতে মিনিমাম ক্যারেক্টার রিমూভাল

  4. পাইথনে regex ব্যবহার করে দুটি স্ট্রিং কম্পেয়ার কীভাবে করবেন?