Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में स्ट्रिंग को पुनर्व्यवस्थित करके पैलिंड्रोमिक उपस्ट्रिंग्स की संख्या अधिकतम करें


हमें किसी भी दी गई लंबाई की एक स्ट्रिंग '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

  1. C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना

    इस लेख में, आप एक दी गई स्ट्रिंग में बनने वाले सबस्ट्रिंग्स (गैर-खाली) की संख्या निकालने के दृष्टिकोण के बारे में जानेंगे।इनपुट: string = moon आउटपुट: 10 व्याख्या: सबस्ट्रिंग्स हैं m, o, o, n, mo, oo, on, moo, oon और moon। इनपुट: string = yellow आउटपुट: 21समाधान खोजने का दृष्टिकोणमान लें स्ट्रिंग की

  1. - C++ में वर्णमाला क्रम में सबस्ट्रिंग की गिनती ढूंढें

    मान लीजिए हमारे पास लंबाई n की एक स्ट्रिंग है। इसमें केवल अपरकेस अक्षर हैं। हमें उन सबस्ट्रिंग की संख्या ढूंढनी है जिनके अक्षर वर्णमाला क्रम में आ रहे हैं। सबस्ट्रिंग का न्यूनतम आकार 2 होगा। तो यदि स्ट्रिंग है: REFJHLMNBV, और सबस्ट्रिंग काउंट 2 है, वे EF और MN हैं। इसे हल करने के लिए, हम इन चरणों

  1. - C++ प्रोग्राम: दी गई स्ट्रिंग के क्रमचय (Permutations) की संख्या ज्ञात करना

    हम एक स्ट्रिंग के कैरेक्टर्स को अलग-अलग क्रम में व्यवस्थित कर सकते हैं। यहां हम देखेंगे कि दी गई स्ट्रिंग से कितने क्रमचय बनाए जा सकते हैं। हम जानते हैं कि यदि एक स्ट्रिंग abc है। इसमें तीन कैरेक्टर्स हैं; हम उन्हें 3! = 6 अलग-अलग तरीकों से व्यवस्थित कर सकते हैं। इसलिए n कैरेक्टर्स वाली स्ट्रिंग क