मान लीजिए हमारे पास अलग-अलग शब्दों वाली एक स्ट्रिंग है, जिसे 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