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

यदि संभव हो तो C++ में पालिंड्रोम बनाने के लिए वर्णों को पुनर्व्यवस्थित करें

हमें किसी भी लंबाई की एक स्ट्रिंग 'str' दी गई है। कार्य वर्णों को इस तरह से पुनर्व्यवस्थित करना है कि आउटपुट दिए गए इनपुट स्ट्रिंग से किसी वर्ण को जोड़े या हटाए बिना एक पैलिंड्रोम स्ट्रिंग होगा। पैलिंड्रोम स्ट्रिंग वह है जिसमें वर्णों को इस तरह से व्यवस्थित किया जाता है कि वे शुरू और अंतिम से एक ही उच्चारण करते हैं।

आइए इसके लिए विभिन्न इनपुट आउटपुट परिदृश्य देखें -

इनपुट -स्ट्रिंग स्ट्र ="इटिन"

आउटपुट - यदि संभव हो तो पैलिंड्रोम बनाने के लिए वर्णों की पुनर्व्यवस्था है:नितिन

स्पष्टीकरण - हमें एक स्ट्रिंग टाइप वेरिएबल दिया गया है, मान लीजिए, str. अब हम एक इनपुट स्ट्रिंग के वर्णों को इस तरह से पुनर्व्यवस्थित करेंगे कि यह एक पैलिंड्रोम स्ट्रिंग होगी और यदि यह संभव नहीं है तो यह 'NOT POSSIBLE' लौटाएगा। तो दिए गए इनपुट स्ट्रिंग के साथ आउटपुट 'नितिन' है।

इनपुट - स्ट्रिंग स्ट्र ="बाबा"

आउटपुट - यदि संभव हो तो पैलिंड्रोम बनाने के लिए वर्णों की पुनर्व्यवस्था है:अब्बा

स्पष्टीकरण - हमें एक स्ट्रिंग टाइप वेरिएबल दिया गया है, मान लीजिए, str. अब हम एक इनपुट स्ट्रिंग के वर्णों को इस तरह से पुनर्व्यवस्थित करेंगे कि यह एक पैलिंड्रोम स्ट्रिंग होगी और यदि यह संभव नहीं है तो यह 'NOT POSSIBLE' लौटाएगा। तो दिए गए इनपुट स्ट्रिंग के साथ आउटपुट 'आब्बा' है।

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • स्ट्रिंग प्रकार का एक वेरिएबल इनपुट करें, मान लें, str और स्ट्रिंग के आकार की गणना करें और इसे वैरिएबल नामक लंबाई में स्टोर करें।

  • डेटा को फ़ंक्शन पुनर्व्यवस्था (str, लंबाई) में पास करें।

  • समारोह के अंदर पुनर्व्यवस्था (गिरफ्तारी, लंबाई)

    • unordered_map प्रकार के 'um' के रूप में एक वैरिएबल बनाएं जो चार और पूर्णांक प्रकार जोड़े को संग्रहीत कर रहा हो।

    • एक पूर्णांक प्रकार चर को कुल घोषित करें और इसे 0 के साथ सेट करें।

    • वर्ण प्रकार चर को 'ch' और स्ट्रिंग प्रकार चर को str_1 और str_2 के रूप में बनाएँ।

    • I से 0 तक के लिए लूप प्रारंभ करें जब तक कि i लंबाई से कम न हो। लूप के अंदर, um[str[i]] को 1 के वृद्धिशील मान से सेट करें।

    • मानचित्र 'उम' को पुनरावृत्त करने के लिए लूप प्रारंभ करें। लूप के अंदर, जांचें कि क्या यह है। दूसरा% 2 0 के बराबर नहीं है, फिर कुल को 1 से बढ़ाएं और इसके साथ ch सेट करें। पहले।

    • जांचें कि क्या कुल 1 या कुल =1 से अधिक है और लंबाई% 2 =0 है, फिर 0 पर लौटें।

    • मानचित्र 'उम' को पुनरावृत्त करने के लिए लूप प्रारंभ करें। लूप के अंदर, str(it.second / 2, it.first), str_1 से str_1 + str और str_2 को str + str_2 पर सेट करें।

    • IF कुल =1 जांचें, फिर str_1 + ch + str_2 लौटाएं। ELSE, str_1 + str_2 लौटाएं।

  • परिणाम प्रिंट करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
string Rearrangement(string str, int length){
   unordered_map<char, int> um;
   int total = 0;
   char ch;
   string str_1 = "";
   string str_2 = "";

   for (int i = 0; i < length; i++){
      um[str[i]]++;
   }
   for(auto it : um){
      if(it.second % 2 != 0){
         total++;
         ch = it.first;
      }
   }
   if(total > 1 || total == 1 && length % 2 == 0){
      return 0;
   }
   for(auto it : um){
      string str(it.second / 2, it.first);
      str_1 = str_1 + str;
      str_2 = str + str_2;
   }
   if(total == 1){
      return str_1 + ch + str_2;
   }
   else{
      return str_1 + str_2;
   }
}
int main(){
   string str = "itnin";
   int length = str.size();
   cout<<"Rearrangement of characters to form palindrome if possible is: "<<Rearrangement(str, length);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा

Rearrangement of characters to form palindrome if possible is: nitin

  1. एक स्ट्रिंग को उल्टा करें (पुनरावृत्तीय) C++

    C++ कोड में एक स्ट्रिंग को उलटने के लिए ढेर, इन-प्लेस और पुनरावृत्ति सहित कई तरीके परिभाषित हैं। इस नमूने में, एक साधारण स्ट्रिंग को निम्नलिखित एल्गोरिथम के साथ पुनरावृत्त रूप से उलट दिया जाएगा; एल्गोरिदम START    Step-1: Input the string    Step-2: Get the length of the string u

  1. जांचें कि क्या दी गई स्ट्रिंग सी ++ में पैलिंड्रोम का घूर्णन है

    यहां हम देखेंगे, एक स्ट्रिंग निश्चित रोटेशन के बाद पैलिंड्रोम है या नहीं। पैलिंड्रोम एक स्ट्रिंग है जो दोनों दिशाओं में समान होती है। एक स्ट्रिंग रोटेशन एक पैलिंड्रोम है यदि वह AAAAD जैसा है। यह सीधे पैलिंड्रोम नहीं है, लेकिन इसका रोटेशन AADAA एक पैलिंड्रोम है। यह जांचने के लिए कि कोई स्ट्रिंग पैलि

  1. सी # में एक स्ट्रिंग के वर्णों को स्वैप करना

    स्ट्रिंग के वर्णों को स्वैप करने के लिए, चयन विधि का उपयोग करें। सबसे पहले, मान लें कि हमारा स्ट्रिंग है - string str = "PQRQP"; अब, आपको P की प्रत्येक घटना को Q से और Q को P के साथ स्वैप करना होगा - str.Select(a=> a == 'P' ? 'Q' : (a=='Q' ? 'P' : a)).T