मान लीजिए कि हमारे पास कुछ शब्दों के साथ एक स्ट्रिंग है। हमें स्ट्रिंग में शब्दों की स्थिति को उलटना होगा। तो अगर स्ट्रिंग "तेज भूरी लोमड़ी एक आलसी कुत्ते के ऊपर कूदती है" की तरह है
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एक फ़ंक्शन को परिभाषित करें getString(), यह s को इनपुट के रूप में लेगा, यह काम करेगा -
-
i:=0, j:=s का आकार – 1
-
जबकि s[i] ='' और i
-
जबकि j>=0 और s[j] ='', j को 1 से घटाएं
-
रिट:=खाली स्ट्रिंग
-
i <=j के लिए, i को 1 से बढ़ाएँ
-
यदि रिट का आकार गैर-शून्य है और रिट का अंतिम तत्व '' है और s[i] '' है, तो अगले पुनरावृत्ति के लिए जाएं
-
रिट:=रिट + एस[i]
-
-
रिवर्सवर्ड्स () नामक एक अन्य विधि को परिभाषित करें, यह इनपुट के रूप में s लेगा
-
जे:=0
-
I के लिए 0 से लेकर s – 1 के आकार तक के प्रत्येक चरण में i :=j
-
यदि s[i] रिक्त है, तो j :=i + 1
-
अन्यथा
-
जबकि j + 1
-
एक्स:=मैं और वाई:=जे
-
जबकि x
-
विनिमय s[x] और s[y], x को 1 से बढ़ाएँ और y को 1 से घटाएँ
-
-
j को 1 से बढ़ाएँ
-
-
-
मुख्य विधि से, निम्न कार्य करें -
-
स्ट्रिंग एस को उलट दें
-
रिवर्सवर्ड्स
-
वापसी getString(s)
उदाहरण (C++)
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; class Solution { public: string reverseWords(string s) { reverse(s.begin(), s.end()); reverseWordss(s); return getString(s); } string getString(string s){ int i = 0; int j = s.size() - 1; while(s[i] == ' ' && i < s.size()) i++; while(j >= 0 && s[j] == ' ') j--; string ret = ""; for(;i <= j; i++){ if(ret.size() && ret.back() == ' ' && s[i] == ' ')continue; ret += s[i]; } return ret; } void reverseWordss(string& s){ int j = 0; for(int i = 0; i < s.size() ;i = j){ if(s[i] == ' '){ j = i + 1; } else{ while(j + 1 < s.size() && s[j + 1] != ' ') j++; int x = i; int y = j; while(x < y){ swap(s[x], s[y]); x++; y--; } j++; } } } }; main(){ Solution ob; cout << (ob.reverseWords("The quick brown fox jumps over a lazy dog")); }
इनपुट
"The quick brown fox jumps over a lazy dog"
आउटपुट
"dog lazy a over jumps fox brown quick The"