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

C++ में फ़्रीक्वेंसी के आधार पर वर्णों को क्रमबद्ध करें


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

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

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

उदाहरण

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

#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. सी ++ में गेटलाइन (स्ट्रिंग)

    इसका उपयोग स्ट्रीम से वर्णों को बिना स्वरूपित इनपुट के रूप में निकालने के लिए किया जाता है और उन्हें सी-स्ट्रिंग के रूप में s में संग्रहीत करता है, जब तक कि निकाला गया वर्ण परिसीमन वर्ण नहीं होता है, या n वर्ण s (समाप्त अशक्त वर्ण सहित) को लिखे जाते हैं। घोषणा इस प्रकार है: basic_istream& getlin

  1. सी ++ में स्ट्रैंड सॉर्ट करें

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

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

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