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

C++ में स्ट्रिंग को सॉर्टेड क्रम में पुनर्व्यवस्थित करना और उसके बाद पूर्णांकों का योग


वर्णमाला की एक स्ट्रिंग को सॉर्टेड क्रम में पुनर्व्यवस्थित करने और स्ट्रिंग में मौजूद सभी पूर्णांकों को जोड़ने की समस्या पर चर्चा करें, उदाहरण के लिए:

इनपुट: str = "adv4fc3"
आउटपुट: "acdfv7"
व्याख्या: सभी अक्षरों को "acdfv" में सॉर्ट किया गया है जिसके बाद पूर्णांकों 4 और 3 का योग है।

इनपुट: str = "h2d7e3f"
आउटपुट: "defh12"
व्याख्या: सभी अक्षरों को "defh" में सॉर्ट किया गया है जिसके बाद पूर्णांकों 2, 7, और 3 का योग है।

समाधान खोजने का दृष्टिकोण

इस समस्या में हमारे पास दो कार्य हैं, एक है स्ट्रिंग को सॉर्ट करना, और दूसरा है पूर्णांक मानों को जोड़ना।

  • स्ट्रिंग को सॉर्ट करना स्ट्रिंग में हर अक्षर की गिनती रखकर और फिर सभी अक्षरों को उनकी गिनती के अनुसार डालकर एक नई स्ट्रिंग बनाकर किया जा सकता है।

  • हम पूर्णांकों का जोड़ हर बार पूर्णांक आने पर एक वेरिएबल में जोड़कर कर सकते हैं।

उदाहरण

उपरोक्त दृष्टिकोण के लिए C++ कोड

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

const int MAX_CHAR = 26;

int main() {
    string str = "h2d7e3f";
    int ch[26] = {0};
    int count = 0;
    // स्ट्रिंग के सभी वर्णों के माध्यम से ट्रैवर्स करना।
    for (int i = 0; i < str.length(); i++) {
        // हर वर्ण की घटना की गिनती रखना।
        if (str[i] >= 'a' && str[i] <= 'z')
            ch[str[i] - 'a'] = ch[str[i] - 'a'] + 1;
        // यदि एक पूर्णांक मिलता है।
        else
            count = count + (str[i] - '0');
    }
    string final = "";
    // ch एरे की मदद से एक सॉर्टेड स्ट्रिंग बनाना।
    for (int i = 0; i < 26; i++) {
        char a = (char)('a' + i);
        // वर्तमान वर्ण को डालना
        // नई स्ट्रिंग में तब तक जब तक इसकी गिनती खत्म न हो जाए
        while (ch[i]-- != 0)
            final = final + a;
    }
    // और अंत में स्ट्रिंग में सभी पूर्णांकों का योग डालें।
    if (count > 0)
        final = final + to_string(count);
    cout << "पुनर्व्यवस्थित स्ट्रिंग: " << final;
    return 0;
}

आउटपुट

<प्रे class="result notranslate">पुनर्व्यवस्थित स्ट्रिंग: defh12

उपरोक्त कोड की व्याख्या

  • आकार 26 का एरे ch इनिशियलाइज़ किया गया है क्योंकि हमें 26 वर्णमालाओं की घटना की गिनती रखने की आवश्यकता है।

  • पहले लूप में, हम स्ट्रिंग के माध्यम से ट्रैवर्स कर रहे हैं। हर वर्णमाला के लिए, हम उस वर्णमाला की गिनती बढ़ा रहे हैं। हर पूर्णांक के लिए, हम इसे काउंट वेरिएबल में जोड़ रहे हैं।

  • दूसरे लूप में, हम सभी गिनती से एक नई सॉर्टेड स्ट्रिंग बना रहे हैं जिसमें हम वर्ण को उनकी गिनती के अनुसार स्ट्रिंग में जोड़ रहे हैं।

  • और हम पहले लूप से गिने गए पूर्णांकों के योग के साथ स्ट्रिंग को अंत में जोड़ रहे हैं।

निष्कर्ष

इस ट्यूटोरियल में, हमने हैश टेबल दृष्टिकोण से इस पर आधारित एक समस्या को हल करते हुए एक स्ट्रिंग को सॉर्टेड क्रम में व्यवस्थित करने पर चर्चा की। हमने इस समस्या के लिए C++ कोड पर भी चर्चा की। हम इसे C, Java, Python आदि किसी भी अन्य प्रोग्रामिंग भाषा में लिख सकते हैं। आशा है कि आपको यह ट्यूटोरियल मददगार लगा होगा।

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

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

  1. - C++ में ऐरे को समान रूप से विभाजित करने के लिए आवश्यक न्यूनतम धनात्मक पूर्णांक

    समस्या विवरण N धनात्मक इंटीजर्स का एक ऐरे दिया गया है, कार्य उस सबसे छोटे धनात्मक पूर्णांक को ढूंढना है जिसे ऐरे के किन्हीं दो एलिमेंट्स के बीच रखा जा सके जैसे कि, उसके पहले आने वाले सबऐरे के एलिमेंट्स का योग, उसके बाद आने वाले सबऐरे के एलिमेंट्स के योग के बराबर हो, नए रखे गए पूर्णांक को दोनों में स

  1. - C++ में दूसरी स्ट्रिंग द्वारा परिभाषित वर्णमाला क्रम के अनुसार स्ट्रिंग्स की सरणी को सॉर्ट करना

    मान लीजिए हमारे पास स्ट्रिंग्स की एक सरणी है, और संदर्भ के लिए एक और स्ट्रिंग है। हमें संदर्भ स्ट्रिंग लेनी है और संदर्भ स्ट्रिंग में वर्णों के क्रम का उपयोग करके स्ट्रिंग सरणी को सॉर्ट करना है। यहां हम सरणी में स्ट्रिंग्स और संदर्भ स्ट्रिंग को लोअरकेस अक्षरों में मान रहे हैं।मान लीजिए स्ट्रिंग सरणी