हमें किसी भी लंबाई की एक स्ट्रिंग 'str' दी गई है। कार्य वर्णों को इस तरह से पुनर्व्यवस्थित करना है कि दिए गए इनपुट स्ट्रिंग से किसी वर्ण को जोड़े या हटाए बिना अधिकतम सबस्ट्रिंग होंगे जो एक पैलिंड्रोम स्ट्रिंग होगी। पैलिंड्रोम स्ट्रिंग वह है जिसमें वर्णों को इस तरह से व्यवस्थित किया जाता है कि वे शुरू और अंतिम से एक ही उच्चारण करते हैं।
आइए इसके लिए विभिन्न इनपुट आउटपुट परिदृश्य देखें -
इनपुट -स्ट्रिंग स्ट्र ="इटिन"
आउटपुट - पैलिंड्रोमिक सबस्ट्रिंग की संख्या को अधिकतम करने के लिए स्ट्रिंग की पुनर्व्यवस्था है:iinnt।
स्पष्टीकरण - हमें एक स्ट्रिंग टाइप वेरिएबल दिया गया है, मान लीजिए, str. अब हम एक इनपुट स्ट्रिंग के वर्णों को इस तरह से पुनर्व्यवस्थित करेंगे कि यह एक अधिकतम पैलिंड्रोम स्ट्रिंग होगी और यदि यह संभव नहीं है तो यह 'NOT POSSIBLE' लौटाएगा। तो दिए गए इनपुट स्ट्रिंग के साथ आउटपुट 'iinnt' है।
इनपुट - स्ट्रिंग स्ट्र ="अबाआब"
आउटपुट - पैलिंड्रोमिक सबस्ट्रिंग की संख्या को अधिकतम करने के लिए स्ट्रिंग की पुनर्व्यवस्था है:आआआबब।
स्पष्टीकरण - हमें एक स्ट्रिंग टाइप वेरिएबल दिया गया है, मान लीजिए, str. अब हम एक इनपुट स्ट्रिंग के वर्णों को इस तरह से पुनर्व्यवस्थित करेंगे कि यह एक अधिकतम पैलिंड्रोम स्ट्रिंग होगी और यदि यह संभव नहीं है तो यह 'NOT POSSIBLE' लौटाएगा। तो दिए गए इनपुट स्ट्रिंग के साथ आउटपुट आआआबब है'
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
स्ट्रिंग प्रकार का एक वेरिएबल इनपुट करें, मान लें, str और स्ट्रिंग के आकार की गणना करें और इसे वैरिएबल नामक लंबाई में स्टोर करें।
-
फ़ंक्शन को डेटा पास करें Rearr_string(str, length).
-
समारोह के अंदर Rearr_string(str, length)
-
आकार 26 के पूर्णांक प्रकार की एक सरणी घोषित करें, मान लें, arr[26] और इसे 0 से प्रारंभ करें।
-
टाइप स्ट्रिंग का एक अस्थायी चर 'अस्थायी' घोषित करें।
-
I से 0 तक के लिए लूप प्रारंभ करें जब तक कि i लंबाई से कम न हो। लूप के अंदर, arr[str[i] - 'a']++ सेट करें।
-
लूप फॉर i से 0 तक i से i तक 26 से कम शुरू करें। लूप के अंदर, j से 0 तक j से arr [i] से कम के लिए एक और लूप प्रारंभ करें। लूप के अंदर, temp को temp + (char)(97 + i) पर सेट करें।
-
वापसी अस्थायी।
-
-
परिणाम प्रिंट करें।
उदाहरण
#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