मान लीजिए हमारे पास एक स्ट्रिंग A है, हमें दूसरी स्ट्रिंग B ढूंढनी है, जो पैलिंड्रोम होगी। और दी गई स्ट्रिंग A, B का उपअनुक्रम होगी। एक स्ट्रिंग का उपअनुक्रम एक स्ट्रिंग है जिसे शेष वर्णों का क्रम बदले बिना कुछ वर्णों को हटाकर बनाया जा सकता है। मान लीजिए स्ट्रिंग "cotst" है, तो उत्पन्न स्ट्रिंग "contest" होगी। इस प्रोग्राम के लिए इनपुट के रूप में हमने A = "ab" चुना है, उत्पन्न स्ट्रिंग "abba" होगी, यह पैलिंड्रोम है।
इसे हल करने के लिए, हम इस दृष्टिकोण का पालन करेंगे। यह बहुत सरल है, हम A को उलट देंगे, फिर उलटे भाग को A के बाद जोड़ देंगे, और B बनाएंगे। तो B = A + reverse(A)
उदाहरण
#include<iostream> #include<algorithm> using namespace std; bool isPalindrome(string str) { string temp = str; reverse(str.begin(), str.end()); return str == temp; } string formPalindromeStr(string A) { string B = A; reverse(A.begin(), A.end()); A = A + B; if (isPalindrome(B)) return B; return A; } string reverse(string input) { string temp = input; int left, right = 0; right = temp.length() - 1; for (left = 0; left < right; left++, right--) swap(temp[left], temp[right]); return temp; } int main(int argc, char const *argv[]) { string A = "Hello"; cout << "The B is: " << formPalindromeStr(A); } आउटपुट
The B is: olleHHello