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

C++ में दूसरी स्ट्रिंग से बनाई जा सकने वाली स्ट्रिंग की घटनाओं की गिनती


हमें इनपुट के रूप में दो स्ट्रिंग str_1 और str_2 दी गई हैं। लक्ष्य str_2 के समान उन स्ट्रिंग की संख्या ज्ञात करना है जिन्हें str_1 से अक्षर चुनकर बनाया जा सकता है जिसमें प्रत्येक वर्ण का उपयोग केवल एक बार किया जाता है।

नोट - दोनों में सभी वर्णमाला समान केस में हैं।

उदाहरण सहित समझ

इनपुट - str_1 = "abcaaaabca", str_2 = "bca";

आउटपुट - दूसरी दी गई स्ट्रिंग से बनाई जा सकने वाली स्ट्रिंग की घटनाओं की संख्या: 2

व्याख्या - str_a में सबस्ट्रिंग bca:

str_1[1-3]="bca" और str[7-9]="bca"

इनपुट - str_1 = "about", str_2 = "cout";

आउटपुट - दूसरी दी गई स्ट्रिंग से बनाई जा सकने वाली स्ट्रिंग की घटनाओं की संख्या: 0

व्याख्या - str_a में सबस्ट्रिंग cout मौजूद नहीं है।

प्रोग्राम में उपयोग किया गया दृष्टिकोण

हम पहले str_1 में सभी वर्णमाला की आवृत्ति की गणना करेंगे और इसे सरणी arr_1[26] में संग्रहीत करेंगे और arr_2 में सभी वर्णमाला की आवृत्ति को सरणी arr_2[26] में संग्रहीत करेंगे।

  • दो स्ट्रिंग str_1 और str_2 लें। लंबाई की गणना str_1.size() और str_2.size() के रूप में करें।
  • फंक्शन count_string(string str_1, int len_str_1, string str_2, int len_str_2) दोनों स्ट्रिंग और लंबाई लेता है और str_1 से बनाई जा सकने वाली str_2 की संख्या लौटाता है।
  • प्रारंभिक काउंट INT_MAX के रूप में लें।
  • arr_1[26] को str_1 में वर्णों की आवृत्ति के लिए और arr_2[26] को arr_2 में वर्णों की आवृत्ति के लिए 0 से आरंभ करें।
  • फॉर लूप का उपयोग करके str_1 और str_2 दोनों को ट्रैवर्स करें और arr_1 और arr_2 में आवृत्तियों को अपडेट करें।
  • अब फॉर लूप का उपयोग करके arr_2 को फिर से ट्रैवर्स करें और यदि वर्तमान आवृत्ति arr_2[i] शून्येतर है तो count (पिछला मान) और arr_1[i]/arr_2[i] का न्यूनतम ( str_1 से प्रत्येक वर्णमाला को str_2 के प्रत्येक वर्ण के लिए केवल एक बार लेना )।
  • अंत में, काउंट में str_1 और str_2 के मिलान वाले संबंधित वर्णों का न्यूनतम मान होगा। उदाहरण aaabbbb (a=3,b=4) और abb (a=1,b=2) न्यूनतम काउंट 1 होगा।
  • सभी लूप के अंत में परिणाम के रूप में काउंट लौटाएँ।

उदाहरण

#include <bits/stdc++.h>
using namespace std;

int count_string(string str_1, int length_str_1, string str_2, int length_str_2) {
    int count = INT_MAX;
    int arr_1[26] = { 0 };
    int arr_2[26] = { 0 };
    for (int i = 0; i < length_str_1; i++) {
        arr_1[str_1[i] - 'a']++;
    }
    for (int i = 0; i < length_str_2; i++) {
        arr_2[str_2[i] - 'a']++;
    }
    int total_alphabets = 26;
    for (int i = 0; i < total_alphabets; i++) {
        if (arr_2[i]) {
            count = min(count, arr_1[i] / arr_2[i]);
        }
    }
    return count;
}

int main() {
    string str_1 = "knowledge", str_2 = "know";
    int length_str_1 = str_1.size();
    int length_str_2 = str_2.size();
    cout << "Count occurrences of a string that can be constructed from another given string are: " << count_string(str_1, length_str_1, str_2, length_str_2);
    return 0;
}

आउटपुट

Count occurrences of a string that can be constructed from another given string are: 1
  1. - C++ में दी गई रेंज में आने वाले BST उपट्री की गणना करें

    =5 और <=50 हैं। इनपुट: नीचे दिया गया ट्री - रेंज [3-6] आउटपुट: रेंज में आने वाले ट्री की संख्या: 2 व्याख्या: नोड्स 4 और 6 के लिए। उनके उपट्री (NULL) 3-6 के बीच में हैं। इनपुट: नीचे दिया गया ट्री: रेंज [12-20] आउटपुट: रेंज में आने वाले ट्री की संख्या: 3 व्याख्या: नोड्स 16, 14 और 20 के लिए। उनके उपट

  1. - C++ में दिए गए स्ट्रिंग के सभी सबस्ट्रिंग्स के अद्वितीय अक्षरों की गणना

    समस्या विवरण एक फंक्शन countUniqueChars(s) को परिभाषित करें जो स्ट्रिंग s में अद्वितीय अक्षरों (जो केवल एक बार आते हैं) की संख्या लौटाता है। उदाहरण: s = HELLOWORLD में H, E, W, R, D अद्वितीय हैं, इसलिए countUniqueChars(s) = 5। अब दी गई स्ट्रिंग s के सभी सबस्ट्रिंग्स t के लिए countUniqueChars(t) का

  1. - C++ में दी गई स्ट्रिंग में सभी पैलिंड्रोमिक उप-अनुक्रमों की गणना करें

    इस ट्यूटोरियल में, हम दी गई स्ट्रिंग में सभी पैलिंड्रोमिक उप-अनुक्रमों की संख्या खोजने के लिए एक प्रोग्राम पर चर्चा करेंगे।इसके लिए हमें एक स्ट्रिंग प्रदान की जाएगी। हमारा कार्य उस दी गई स्ट्रिंग में बनाए जा सकने वाले पैलिंड्रोमिक उप-अनुक्रमों की संख्या ढूंढना है।उदाहरण#include<iostream> #incl