मान लीजिए कि हमारे पास एक स्ट्रिंग ए है, हमें एक और स्ट्रिंग बी ढूंढनी है, जो पैलिंड्रोम होगी। और दिया गया स्ट्रिंग A, B का अनुगमन होगा। एक स्ट्रिंग का अनुगमन एक स्ट्रिंग है जिसे इसके द्वारा शेष वर्णों के क्रम को बदले बिना कुछ वर्णों को हटाकर बनाया जा सकता है। मान लीजिए कि स्ट्रिंग "कॉटस्ट" है, तो उत्पन्न स्ट्रिंग "प्रतियोगिता" होगी। इस कार्यक्रम के इनपुट के लिए हमने ए ="एबी" चुना है, उत्पन्न स्ट्रिंग "अब्बा" होगी, यह पैलिंड्रोम है।
इसे हल करने के लिए, हम इस दृष्टिकोण का पालन करेंगे। यह बहुत आसान है, हम ए को उलट देंगे, फिर ए के बाद उल्टे हिस्से को जोड़ देंगे, और बी फॉर्म करेंगे। तो बी =ए + रिवर्स (ए)
उदाहरण
#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