ধারণা
সমান দৈর্ঘ্যের প্রদত্ত দুটি স্ট্রিং S1 এবং S2 এর ক্ষেত্রে, আমাদের কাজ হল একটি সূচক i নির্ধারণ করা যাতে S1[0…i] এবং S2[i+1...n-1] একসাথে সংযুক্ত হলে একটি প্যালিনড্রোম দেয়। এটা দেখা গেছে যে যদি এই ধরনের একটি সূচক নির্ধারণ করা সম্ভব না হয় তবে প্রিন্ট -1।
ইনপুট
S1 = “pqrsu”, S2 = “wxyqp”
আউটপুট
1
S1[0..1] =“pq”, S2[2..n-1] =“ypq”
S1 + S2 ="pqyqp" একটি প্যালিনড্রোম নির্দেশ করে৷
৷ইনপুট
S1 = “pqrst”, S2 = “qprqz”
আউটপুট
-1
পদ্ধতি
- প্রথমে, আমরা 0 থেকে n (স্ট্রিংয়ের দৈর্ঘ্য) পর্যন্ত পুনরাবৃত্তি করি এবং S1 থেকে অন্য স্ট্রিং-এ ith অক্ষর কপি করি (ধরুন এটি S)।
- এর পর আমরা আরেকটি অস্থায়ী স্ট্রিং টেম্প নিই এবং S2-এর অক্ষরগুলিকে সূচী i +1 থেকে n-এ কপি করি।
- অবশেষে, আমরা স্ট্রিং (S + টেম্প) প্যালিনড্রোম কিনা তা যাচাই করি।
উদাহরণ
// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
// Shows function that returns true if s is palindrome
bool isPalindrome(string str){
int i = 0;
int b = str.length() - 1;
while (i< b) {
if (str[i] != str[b])
return false;
i++;
b--;
}
return true;
}
// Shows function to return the required index
int getIndex1(string S1, string S2, int n){
string S = "";
for (int i = 0; i< n; a++) {
// Used to copy the ith character in S
S = S + S1[i];
string temp = "";
// Used to copy all the character of string s2 in Temp
for (int b = i + 1; b < n; b++)
temp += S2[b];
// Verify whether the string is palindrome
if (isPalindrome(S + temp)) {
return i;
}
}
return -1;
}
// Driver code
int main(){
string S1 = "pqrsu", S2 = "wxyqp";
int n = S1.length();
cout << getIndex1(S1, S2, n);
return 0;
} আউটপুট
1