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

C++ में Sort Characters By Frequency


मान लीजिए हमारे पास एक स्ट्रिंग है, हमें वर्णों को आवृत्ति (frequency) के आधार पर क्रमबद्ध करना है। इसलिए यदि स्ट्रिंग "abbbacbcc" जैसी है, तो आउटपुट "bbbbcccaa" होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • v नामक जोड़े की एक सरणी बनाएं, m नामक एक मैप बनाएं
  • स्ट्रिंग में सभी वर्णों के लिए,
    • m[वर्ण] के मान को 1 से बढ़ाएं
  • i := मैप का पहला तत्व
  • जब तक मैप में तत्व हैं
    • (i.second, i.first) को v में सम्मिलित करें
    • और i को अगले तत्व की ओर इंगित करने के लिए बढ़ाएं
  • वेक्टर v को क्रमबद्ध करें
  • ans := एक खाली स्ट्रिंग
  • i := 0 से v के आकार तक
    • t := v[i] का पहला तत्व
    • जब तक t 0 नहीं है
      • ans := ans + v[i] का दूसरा भाग
      • t को 1 से घटाएं
  • ans लौटाएं

उदाहरण

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h> using namespace std; class Solution { public:    static bool cmp(pair <int, char> a, pair <int, char> b){       return a.first < b.first;    }    string frequencySort(string s) {       vector < pair <int, char> > v;       map <char, int> m;       for(int i = 0; i < s.size(); i++){          m[s[i]]++;       }       map <char, int> :: iterator i = m.begin();       while(i != m.end()){          v.push_back({i->second, i->first});          i++;       }       sort(v.rbegin(), v.rend(), cmp);       string ans = "";       for(int i = 0; i < v.size(); i++){          int t = v[i].first;          while(t--)ans += v[i].second;       }       return ans;    } }; main(){    Solution ob;    cout << ob.frequencySort("abbbacbcc"); }

इनपुट

"abbbacbcc"

आउटपुट

bbbbcccaa

  1. - C++ में getline (string)

    इसका उपयोग स्ट्रीम से अनफॉर्मेटेड इनपुट के रूप में कैरेक्टर्स निकालने और उन्हें c-स्ट्रिंग के रूप में s में संग्रहीत करने के लिए किया जाता है, जब तक कि निकाला गया कैरेक्टर डिलिमिटिंग कैरेक्टर न हो, या n कैरेक्टर्स s में लिखे जा चुके हों (टर्मिनेटिंग नल कैरेक्टर सहित)। डिक्लेरेशन इस प्रकार है: basic

  1. - C++ में स्ट्रैंड सॉर्ट

    इस सेक्शन में हम देखेंगे कि C++ के स्टैंडर्ड लाइब्रेरी का उपयोग करके किसी ऐरे या लिंक्ड लिस्ट को कैसे सॉर्ट कर सकते हैं। C++ में विभिन्न उद्देश्यों के लिए कई अलग-अलग लाइब्रेरीज हैं। सॉर्टिंग उनमें से एक है। C++ फ़ंक्शन std::list::sort() लिस्ट के एलिमेंट्स को आरोही क्रम में सॉर्ट करता है। समान एलिमे

  1. - C++ में ट्राइग्राफ

    ISO-646 कैरेक्टर सेट में C सिंटैक्स के सभी वर्ण नहीं होते, इसलिए कुछ सिस्टम कीबोर्ड और डिस्प्ले के साथ हैं जो कुछ वर्णों को नहीं संभाल सकते। इन वर्णों को 3 वर्णों के अनुक्रम का उपयोग करके बनाया जा सकता है जिसे ट्राइग्राफ कहा जाता है। C में, किसी भी अन्य प्रसंस्करण से पहले, निम्नलिखित तीन-वर्ण अनुक्