हमें किसी भी दी गई लंबाई की एक स्ट्रिंग 'str' दी गई है। कार्य है वर्णों को इस तरह पुनर्व्यवस्थित करना कि अधिकतम उपस्ट्रिंग्स पैलिंड्रोम स्ट्रिंग होंगी बिना दिए गए इनपुट स्ट्रिंग से कोई वर्ण जोड़े या हटाए। पैलिंड्रोम स्ट्रिंग वह है जिसमें वर्ण इस तरह व्यवस्थित होते हैं कि वे शुरू और अंत से समान उच्चारित होते हैं।
विभिन्न इनपुट-आउटपुट परिदृश्य
इनपुट - string str = "itnin"
आउटपुट - पैलिंड्रोमिक उपस्ट्रिंग्स की संख्या अधिकतम करने के लिए स्ट्रिंग का पुनर्व्यवस्थापन है: iinnt.
व्याख्या - हमें एक स्ट्रिंग प्रकार का चर दिया गया है, मान लीजिए, str। अब हम इनपुट स्ट्रिंग के वर्णों को इस तरह पुनर्व्यवस्थित करेंगे कि यह अधिकतम पैलिंड्रोम स्ट्रिंग हो और यदि यह संभव नहीं है तो यह 'NOT POSSIBLE' लौटाएगा। इसलिए दिए गए इनपुट स्ट्रिंग के साथ आउटपुट 'iinnt.' है।
इनपुट - string str = "abaaaabb"
आउटपुट - पैलिंड्रोमिक उपस्ट्रिंग्स की संख्या अधिकतम करने के लिए स्ट्रिंग का पुनर्व्यवस्थापन है: aaaaabbb.
व्याख्या - हमें एक स्ट्रिंग प्रकार का चर दिया गया है, मान लीजिए, str। अब हम इनपुट स्ट्रिंग के वर्णों को इस तरह पुनर्व्यवस्थित करेंगे कि यह अधिकतम पैलिंड्रोम स्ट्रिंग हो और यदि यह संभव नहीं है तो यह 'NOT POSSIBLE' लौटाएगा। इसलिए दिए गए इनपुट स्ट्रिंग के साथ आउटपुट 'aaaaabbb' है।
उपयोग किया गया दृष्टिकोण
एक स्ट्रिंग प्रकार का चर इनपुट करें, मान लीजिए, str और स्ट्रिंग का आकार गणना करें और इसे length नामक चर में संग्रहीत करें।
डेटा को फ़ंक्शन Rearr_string(str, length) में पास करें।
फ़ंक्शन Rearr_string(str, length) के अंदर
आकार 26 का एक पूर्णांक प्रकार का सरणी घोषित करें, मान लीजिए, arr[26] और इसे 0 से आरंभ करें।
'temp' प्रकार का एक अस्थायी चर घोषित करें।
i को 0 से length से कम होने तक FOR लूप शुरू करें। लूप के अंदर, arr[str[i] - 'a']++ सेट करें।
i को 0 से 26 से कम होने तक FOR लूप शुरू करें। लूप के अंदर, j को 0 से arr[i] से कम होने तक एक और FOR लूप शुरू करें। लूप के अंदर, temp को temp + (char)(97 + i) सेट करें।
temp लौटाएं।
परिणाम प्रिंट करें।
उदाहरण
#include <bits/stdc++.h> using namespace std; string Rearr_string(string str, int length){ int arr[26] = { 0 }; string temp = ""; for(int i = 0; i < length; i++){ arr[str[i] - 'a']++; } for(int i = 0; i < 26; i++){ for(int j = 0; j < arr[i]; j++){ temp = temp + (char)(97 + i); } } return temp; } int main(){ string str = "itinn"; int length = str.length(); cout<<"Rearrangement of the string to maximize the number of palindromic substrings is: "<<Rearr_string(str, length); return 0; } आउटपुट
उपरोक्त कोड चलाने पर निम्नलिखित आउटपुट उत्पन्न होगा:
Rearrangement of the string to maximize the number of palindromic substrings is: iinnt