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

C++ में वाक्य में शब्दों को पुनर्व्यवस्थित करना


मान लीजिए हमारे पास अलग-अलग शब्दों वाली एक स्ट्रिंग है, जिसे sentence कहा जाता है, और यह निम्न प्रारूप में है:

  • पहला अक्षर अपरकेस में है।

  • टेक्स्ट में प्रत्येक शब्द एक सिंगल स्पेस कैरेक्टर से अलग है।

हमें टेक्स्ट में शब्दों को इस तरह पुनर्व्यवस्थित करना है कि सभी शब्द उनकी लंबाई के बढ़ते क्रम में व्यवस्थित हों। यदि दो शब्दों की लंबाई समान है, तो उन्हें उनके मूल क्रम में व्यवस्थित करें।

फिर अंत में इन नियमों को लागू करके स्ट्रिंग लौटाएं।

इसलिए, यदि इनपुट है "I love to code in cpp", तो आउटपुट होगा "I to in cpp love code"

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

  • text के पहले कैरेक्टर को स्मॉल लेटर बनाएं

  • एक ऐरे x परिभाषित करें := स्पेस का उपयोग करके text को विभाजित करके सभी शब्द डालें

  • पेयर्स का एक ऐरे s परिभाषित करें

  • i := 0 से शुरू करें, जब i < x का आकार, i बढ़ाते हुए, करें -

    • {x[i],i} को s के अंत में डालें

  • लंबाई के आधार पर ऐरे s को सॉर्ट करें, यदि लंबाई समान है तो इंडेक्स मानों का उपयोग करें

  • ret := खाली स्ट्रिंग

  • i := 0 से शुरू करें, जब i < s का आकार, i बढ़ाते हुए, करें -

    • ret := ret + s[i] का पहला एलिमेंट

    • यदि i, s के आकार के बराबर नहीं है, तो -

      • ret := ret + खाली स्थान के साथ जोड़ें

  • ret के पहले कैरेक्टर को कैपिटल बनाएं

  • ret लौटाएं

उदाहरण

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

#include <bits/stdc++.h> using namespace std; class Solution { public:    vector <string> split(string& s, char delimiter){       vector <string> tokens;       string token;       istringstream tokenStream(s);       while(getline(tokenStream, token, delimiter)){          tokens.push_back(token);       }       return tokens;    }    static bool cmp(pair <string, int>& a, pair <string, int>& b){       if(a.first.size() != b.first.size()) return a.first.size() < b.first.size();          return a.second < b.second;    }    static bool a(string& a, string& b){       return a.size() < b.size();    }    string arrangeWords(string text) {       text[0] += 'a' - 'A';       vector<string> x = split(text, ' ');       vector<pair<string, int> > s;       for (int i = 0; i < x.size(); i++)       s.push_back({ x[i], i });       sort(s.begin(), s.end(), cmp);       string ret = "";       for (int i = 0; i < s.size(); i++) {          ret += s[i].first;          if (i != s.size() - 1)             ret += ' ';       }       ret[0] += 'A' - 'a';       return ret;    } }; main(){    Solution ob;    cout << (ob.arrangeWords("I love to code in cpp")); }

इनपुट

"I love to code in cpp"

आउटपुट

I to in cpp love code

  1. - C++ में स्ट्रिंग को टोकनाइज़ कैसे करें?

    पहला तरीका शब्दों को स्पेस से अलग करके पढ़ने के लिए stringstream का उपयोग करना है। यह थोड़ा सीमित है लेकिन अगर आप उचित चेक प्रदान करते हैं तो यह कार्य काफी अच्छी तरह से करता है। उदाहरण #include <vector> #include <string> #include <sstream> using namespace std; int main() {  

  1. - Python प्रोग्राम में वाक्य में शब्दों की गिनती

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक स्ट्रिंग दी गई है, हमें स्ट्रिंग में शब्दों की संख्या गिनने की आवश्यकता है। दृष्टिकोण 1 - split() फ़ंक्शन का उपयोग करना split() फ़ंक्शन स्ट्रिंग को स्पेस को डिलीमीटर के रूप में एक सूची पुनरावृत्ति में तोड़ता

  1. - पायथन प्रोग्राम: वाक्य में शब्दों की गिनती करें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट हमें एक वाक्य दिया गया है, हमें वाक्य में शब्दों की संख्या गिनने की आवश्यकता है। यहां हम दो दृष्टिकोणों पर चर्चा करेंगे: दृष्टिकोण 1 – split() फंक्शन का उपयोग करके उदाहरण test_string