কনসেপ্ট
সমান দৈর্ঘ্যের দুটি স্ট্রিং 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