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

एक स्ट्रिंग में अलग-अलग सबस्ट्रिंग जो सी ++ प्रोग्राम में दिए गए स्ट्रिंग्स के साथ शुरू और समाप्त होती हैं

इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो दिए गए स्ट्रिंग्स के साथ शुरू और समाप्त होने वाले सबस्ट्रिंग्स की कुल संख्या का पता लगाता है।

हमें एक स्ट्रिंग और दो सबस्ट्रिंग दिए गए हैं। हमें दिए गए दो सबस्ट्रिंग के साथ शुरू और समाप्त होने वाली अलग-अलग सबस्ट्रिंग काउंट को खोजने की जरूरत है। आइए एक उदाहरण देखें।

इनपुट

str = "getmesomecoffee"
start = "m"
end = "e"

आउटपुट

6

दिए गए स्ट्रिंग में कुल 6 अलग-अलग सबस्ट्रिंग हैं। वे हैं मैं, मेसोम, मेसोमेमेकोफी, मेसोमेमेकोफी, मेकोफी, मेकोफी।

आइए समस्या को हल करने के लिए चरणों को देखें।

  • स्ट्रिंग्स को इनिशियलाइज़ करें।

  • स्ट्र पर पुनरावृति करें और प्रारंभ और अंत सबस्ट्रिंग इंडेक्स ढूंढें। उन्हें अलग-अलग सरणियों में संग्रहित करें।

  • अलग-अलग सबस्ट्रिंग को स्टोर करने के लिए एक सेट को इनिशियलाइज़ करें।

  • स्ट्र पर पुनरावृति करें।

    • जांचें कि क्या वर्तमान अनुक्रमणिका हमारे द्वारा पहले बनाई गई सरणी के प्रारंभ स्ट्रिंग से मेल खाती है।

    • अगर हमें स्टार्ट स्ट्रिंग्स इंडेक्स मिला है, तो एंड स्ट्रिंग को खोजें।

    • सभी स्ट्रिंग्स को तब तक जोड़ें जब तक हमें किसी वैरिएबल का अंत न मिल जाए।

    • जब हमें अंतिम स्ट्रिंग मिल जाए, तो सबस्ट्रिंग की संख्या बढ़ा दें और सबस्ट्रिंग को सेट में जोड़ दें।

    • सबस्ट्रिंग वेरिएबल को रीसेट करें।

  • सबस्ट्रिंग गिनती प्रिंट करें।

उदाहरण

आइए कोड देखें।

#include <bits/stdc++.h>
using namespace std;
int getSubstringsCount(string str, string start, string end) {
   int substrings_count = 0, str_length = str.size(), start_length = start.size(), end_length = end.size();
   int start_matches_index[str_length] = {0}, end_matches_index[str_length] = {0};
   for (int i = 0; i < str_length; i++) {
      if (str.substr(i, start_length) == start) {
         start_matches_index[i] = 1;
      }
      if (str.substr(i, end_length) == end) {
         end_matches_index[i] = 1;
      }
   }
   set<string> substrings;
   string current_substring = "";
   for (int i = 0; i < str_length; i++) {
      if (start_matches_index[i]) {
         for (int j = i; j < str_length; j++) {
            if (!end_matches_index[j]) {
               current_substring += str[j];
            }
            if (end_matches_index[j]) {
               current_substring += str.substr(j, end_length);
               if (substrings.find(current_substring) == substrings.end()) {
                  substrings_count++;
               }
               substrings.insert(current_substring);
            }
         }
         current_substring = "";
      }
   }
   return substrings_count;
}
int main() {
   string str = "getmesomecoffee";
   string start = "m";
   string end = "e";
   cout << getSubstringsCount(str, start, end) << endl;
   return 0;
}

आउटपुट

यदि आप उपरोक्त प्रोग्राम को निष्पादित करते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।

6

निष्कर्ष

यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।


  1. C++ का उपयोग करके दिए गए एक छोर और मध्य के साथ एक पंक्ति के दूसरे छोर का पता लगाएं

    इस समस्या में, हमें एक प्रारंभिक बिंदु A(xA रेखा के दो बिंदुओं के निर्देशांक दिए गए हैं। , वाईए ) और मध्यबिंदु M(xM , वाईएम ) .हमारा काम है एक पंक्ति के दूसरे छोर को एक छोर और मध्य के साथ ढूंढना । समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट A = [1, 2], M = [3, 0] आउटपुट [5, -2] स्पष्टीकरण

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

    बाइनरी नंबर के साथ दो स्ट्रिंग्स को देखते हुए, हमें उन दो बाइनरी स्ट्रिंग्स को जोड़कर प्राप्त परिणाम को खोजना होगा और परिणाम को बाइनरी स्ट्रिंग के रूप में वापस करना होगा। बाइनरी नंबर वे नंबर होते हैं जिन्हें या तो 0 या 1 के रूप में व्यक्त किया जाता है। 2 बाइनरी नंबर जोड़ते समय बाइनरी जोड़ नियम होता

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

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