अवधारणा
दो दी गई स्ट्रिंग्स 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 से i-वें वर्ण को दूसरी स्ट्रिंग (मान लें यह S है) में कॉपी करते हैं।ली><ली>उसके बाद हम एक और अस्थायी स्ट्रिंग temp लेते हैं और इंडेक्स i+1 से n तक S2 के वर्णों को कॉपी करते हैं।ली><ली>अंत में, हम सत्यापित करते हैं कि स्ट्रिंग (S + temp) पैलिंड्रोम है या नहीं।ली>उल>उदाहरण
<प्रि क्लास="प्रिटीप्रिंट नोट्रांसलेट">// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // फ़ंक्शन जो सच लौटाता है यदि s पैलिंड्रोम है 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; } // आवश्यक इंडेक्स लौटाने वाला फ़ंक्शन int getIndex1(string S1, string S2, int n){ string S = ""; for (int i = 0; i< n; a++) { // S में i-वें वर्ण को कॉपी करने के लिए उपयोग किया जाता है S = S + S1[i]; string temp = ""; // Temp में स्ट्रिंग s2 के सभी वर्णों को कॉपी करने के लिए उपयोग किया जाता है 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