अवधारणा
दिए गए दो स्ट्रिंग्स 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 (स्ट्रिंग की लंबाई) तक पुनरावृति करते हैं और ith वर्ण को S1 से दूसरी स्ट्रिंग में कॉपी करते हैं (मान लें कि यह S है)।
- उसके बाद हम एक और अस्थायी स्ट्रिंग अस्थायी लेते हैं और S2 के वर्णों को इंडेक्स i +1 से n तक कॉपी करते हैं।
- आखिरकार, हम सत्यापित करते हैं कि स्ट्रिंग (एस + अस्थायी) पैलिंड्रोम है या नहीं।
उदाहरण
// 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