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

C++-এ দুই স্ট্রিং বিভক্ত করে প্যালিনড্রোম তৈরি করার প্রোগ্রাম


দুটি সমান দৈর্ঘ্যের স্ট্রিং 'a' এবং 'b' দেওয়া আছে। সেগুলো কোনো ইনডেক্সে বিভক্ত করলে প্রিফিক্স + সাফিক্স কানবিনেশন প্যালিনড্রোম বানাবে কিনা চেক করতে হবে।

অ্যালগরিদম (Two-Pointer Approach)

  • দুটি পয়েন্টার: low (শুরু) এবং high (শেষ)।
  • স্ট্রিং a-র low এবং b-র high চেরেক্টার তুলনা করুন।
  • যতক্ষণ সমান, ততক্ষণ low++, high--।
  • যখন ভিন্ন হয়, তখন a[low...high] বা b[low...high] যেকোনো একটি প্যালিনড্রোম কিনা চেক করুন।
  • স্ট্রিং বদলিয়ে (Split(b, a))ও চেক করুন।

উদাহরণ কোড

#include <bits/stdc++.h>
using namespace std;

bool isPalindrome(string &s, int l, int r) {
    while (l < r) {
        if (s[l++] != s[r--]) return false;
    }
    return true;
}

bool checkSplit(string &a, string &b) {
    int low = 0, high = a.size() - 1;
    while (low < high && a[low] == b[high]) {
        low++; high--;
    }
    return isPalindrome(a, low, high) || isPalindrome(b, low, high);
}

bool checkPalindromic(string a, string b) {
    if (a.size() < 2) return true;
    return checkSplit(a, b) || checkSplit(b, a);
}

int main() {
    string a = "abcpqr", b = "mnocba";
    cout << (checkPalindromic(a, b) ? "True" : "False") << endl;
    return 0;
}

আউটপুট

True

ইনডেক্স ২-এ স্প্লিট করলে: "abc" + "cba" = "abccba" (প্যালিনড্রোম)।


  1. সি++-এ দুটি বাইনারি স্ট্রিং যোগ করার প্রোগ্রাম

  2. দুই স্ট্রিং কনক্যাটেনেট (Concatenate) করার C++ প্রোগ্রাম

  3. দুই স্ট্রিং তুলনা করার জাভা প্রোগ্রাম (ম্যানুয়াল পদ্ধতি)

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