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

C++-এ দুটি স্ট্রিংয়ের প্রিফিক্স ও সাফিক্স মিলিয়ে প্যালিনড্রোম बनाने वाला ইনডেক্স


কনসেপ্ট

সমান দৈর্ঘ্যের দুটি স্ট্রিং S1 এবং S2 দেওয়া আছে। এমন একটি ইনডেক্স i খুঁজে বের করুন যাতে S1[0..i] এবং S2[i+1..n-1] কনক্যাট করলে প্যালিনড্রোম হয়। না পেলে -1 ফেরত দিন।

ইনপুট ১

S1 = "pqrsu", S2 = "wxyqp"

আউটপুট ১

1

S1[0..1]="pq", S2[2..4]="ypq", কনক্যাট="pqyqp" (প্যালিনড্রোম)।

ইনপুট ২

S1 = "pqrst", S2 = "qprqz"

আউটপুট ২

-1

পদ্ধতি

  • ০ থেকে n-1 পর্যন্ত লুপ করুন। S1[i] কপি করে S বানান।
  • S2[i+1..n-1] কপি করে temp বানান।
  • S+temp প্যালিনড্রোম কিনা চেক করুন। হলে i ফেরত দিন।

উদাহরণ (C++ কোড)

// C++ ইমপ্লিমেন্টেশন
#include <bits/stdc++.h>
using namespace std;

bool isPalindrome(string str) {
    int i = 0, b = str.length() - 1;
    while (i < b) {
        if (str[i] != str[b]) return false;
        i++; b--;
    }
    return true;
}

int getIndex1(string S1, string S2, int n) {
    string S = "";
    for (int i = 0; i < n; i++) {
        S = S + S1[i];
        string temp = "";
        for (int b = i + 1; b < n; b++) temp += S2[b];
        if (isPalindrome(S + temp)) return i;
    }
    return -1;
}

int main() {
    string S1 = "pqrsu", S2 = "wxyqp";
    int n = S1.length();
    cout << getIndex1(S1, S2, n);
    return 0;
}

আউটপুট

1
  1. C++ ব্যবহার করে অ্যারেতে a % b = k সেটি করার সব জোড়া (a, b) বের করা

  2. দেওয়া সংখ্যা n-এর জন্য x + x-এর অঙ্কের যোগফল = n এমন x খুঁজে বের করা C++-এ

  3. C++-এ একটি শব্দকে প্যালিনড্রোম (Palindrome) পার্টিশন করার উপায় গণনা

  4. পাইথনে দুই স্ট্রিং-এর প্রিফিক্স ও সাফিক্স মিলিয়ে প্যালিনড্রোম বের করা