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

C++ में समान वर्णों की जोड़ी के बीच एक तारा सम्मिलित करने के लिए पुनरावर्ती कार्यक्रम

इनपुट के रूप में एक स्ट्रिंग str1 दिया गया। लक्ष्य इनपुट स्ट्रिंग में समान वर्णों की एक जोड़ी के बीच एक '*' सम्मिलित करना है और एक पुनरावर्ती दृष्टिकोण का उपयोग करके परिणामी स्ट्रिंग को वापस करना है।

यदि इनपुट स्ट्रिंग str1="वेलनेस" . है तो आउटपुट "wel*lnes*s" . होगा

उदाहरण

इनपुट − str1="खुशी"

आउटपुट − स्ट्रिंग जोड़ने के बाद * :hap*pines*s

स्पष्टीकरण − जोड़े pp और ss के बीच * जोड़ने से हमें परिणामी स्ट्रिंग hap*pine*s प्राप्त होगी

इनपुट - str1="स्विममिंगगग्ग पूूल"

आउटपुट - जोड़ने के बाद स्ट्रिंग * :तैरना*m*m*ming*g*g*g po*o*o*ol

स्पष्टीकरण − मिमी, gg और oo जोड़े के बीच * जोड़ने से हमें परिणामी स्ट्रिंग मिलेगी swim*m*m*ming*g*g*g po*o*o*ol

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

इस दृष्टिकोण में स्ट्रिंग str1 लें। प्रत्येक पुनरावृत्ति में मध्य बिंदु के रूप में वर्तमान सूचकांक के साथ str1 को दो में विभाजित करें। यदि पहले सबस्ट्रिंग का अंतिम वर्ण अगले सबस्ट्रिंग के पहले वर्ण के समान है, तो मूल स्ट्रिंग को सबस्ट्रिंग 1 के बाद '*' के बाद सबस्ट्रिंग 2 के रूप में सेट करें। सबस्ट्रिंग 2 की लंबाई 0 होने की स्थिति में रिकर्सन समाप्त करें।

  • इनपुट स्ट्रिंग को str1 के रूप में लें और इसकी लंबाई को लेन के रूप में परिकलित करें।

  • फ़ंक्शन addStar(string&s1, int i, int len1) इनपुट के रूप में s1, इसकी लंबाई और वर्तमान इंडेक्स लेता है और * जोड़ता है यदि दो जोड़ी वर्ण समान हैं ..

  • tmp1 को इंडेक्स 0 से i तक s1 के सबस्ट्रिंग के रूप में लें

  • tmp2 को इंडेक्स i से len1 + 1 तक s1 के सबस्ट्रिंग के रूप में लें।

  • यदि tmp1 का अंतिम वर्ण और tmp2 का पहला वर्ण बराबर है तो s1=tmp1+'*'+tmp2 सेट करें।

  • एडस्टार (एस 1, आई + 1, लेन 1) पर कॉल करें; अगले पुनरावृत्ति के लिए।

  • अंत में str1 को main के अंदर प्रिंट करें।

उदाहरण

#include <iostream>
using namespace std;
void addStar(string& s1, int i, int len1){
   string tmp1=s1.substr(0,i);
   string tmp2=s1.substr(i,len1+1);
   if (tmp2.length() == 0){
      return;
   }
   if (tmp1[i-1] == tmp2[0]){
      s1 = tmp1 + '*' + tmp2;
   }
   addStar(s1, i+1, len1);
}
int main(){
   string str1 = "aabbcccdddd";
   int len=str1.length();
   addStar(str1, 0, len-1);
   cout << "String after adding * : "<<str1 << endl;
   return 0;
}

आउटपुट

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

String after adding * : a*ab*bc*c*cd*d*d*d

  1. सी ++ प्रोग्राम अक्षर को छोड़कर एक स्ट्रिंग में सभी वर्णों को हटाने के लिए

    एक स्ट्रिंग एक आयामी वर्ण सरणी है जिसे एक शून्य वर्ण द्वारा समाप्त किया जाता है। इसमें वर्ण, अंक, विशेष प्रतीक आदि हो सकते हैं। एक स्ट्रिंग में अक्षर को छोड़कर सभी वर्णों को हटाने का कार्यक्रम इस प्रकार दिया गया है। उदाहरण #include <iostream> using namespace std; int main() {    cha

  1. C++ प्रोग्राम दो स्ट्रिंग्स को जोड़ने के लिए

    एक स्ट्रिंग एक आयामी वर्ण सरणी है जिसे एक शून्य वर्ण द्वारा समाप्त किया जाता है। दो स्ट्रिंग्स का संयोजन एक नई स्ट्रिंग बनाने के लिए उनका जुड़ना है। उदाहरण के लिए। String 1: Mangoes are String 2: tasty Concatenation of 2 strings: Mangoes are tasty दो तारों को जोड़ने का कार्यक्रम इस प्रकार दिया गया

  1. जावा प्रोग्राम वर्णों की जोड़ी को स्वैप करने के लिए

    इस लेख में, हम समझेंगे कि जावा में वर्णों की जोड़ी को कैसे स्वैप किया जाए। हम दिए गए स्ट्रिंग को कैरेक्टर ऐरे में बदल देंगे। यह हमें पात्रों की जोड़ी को स्वैप करने की अनुमति देगा। नीचे उसी का एक प्रदर्शन है - मान लें कि हमारा इनपुट है - Input string: Java program वांछित आउटपुट होगा - The string a