मान लीजिए कि हमारे पास एक इनपुट स्ट्रिंग वाक्य है जहां प्रत्येक तत्व को एकल वर्ण के रूप में संग्रहीत किया जाता है, हमें स्ट्रिंग्स को शब्द दर शब्द उलटना होगा।
इसलिए, यदि इनपुट ["t", "h", "e", ","m", "a", "n", ","i", "s", "" "," जैसा है n", "एल", "सी", "ई"], तो आउटपुट ["एन", "एल", "सी", "ई", ","i", "एस", " ","एम", "ए", "एन", "," टी "," एच "," ई "]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
सरणी s को उलट दें
-
जे:=0
-
n :=s का आकार
-
इनिशियलाइज़ i:=0 के लिए, जब i
-
यदि s[i] ' ' के समान है, तो -
-
सरणी s को अनुक्रमणिका j से i तक उलट दें
-
जे:=मैं + 1
-
-
-
सरणी s को अनुक्रमणिका j से n में उलट दें
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#include <bits/stdc++.h> using namespace std; void print_vector(vector<auto> v){ cout << "["; for(int i = 0; i<v.size(); i++){ cout << v[i] << ", "; } cout << "]"<<endl; } class Solution { public: void reverseWords(vector<char>& s) { reverse(s.begin(), s.end()); int j = 0; int n = s.size(); for(int i = 0; i < n; i++){ if(s[i] == ' '){ reverse(s.begin() + j, s.begin() + i); j = i + 1; } } reverse(s.begin() + j, s.begin() + n); } }; main(){ Solution ob; vector<char> v = {'t','h','e',' ','m','a','n',' ','i','s',' ','n','i','c','e'}; ob.reverseWords(v); print_vector(v); }
इनपुट
{'t','h','e',' ','m','a','n',' ','i','s',' ','n','i','c','e'}
आउटपुट
[n, i, c, e, , i, s, , m, a, n, , t, h, e, ]