একটি বাক্য ক্যারেক্টার ভেক্টর হিসেবে দেওয়া আছে। লক্ষ্য হল শব্দগুলোর ক্রম উল্টিয়ে দেয়া, কিন্তু শব্দের ভেতরের ক্যারেক্টার অর্ডার একই থাকবে।
প্রথমে পুরো ভেক্টর রিভার্স করা হয়। তারপর স্পেস পাওয়া পর্যন্ত প্রতিটি শব্দ আলাদা করে রিভার্স করা হয়।
ইনপুট: {'t','h','e',' ','m','a','n',' ','i','s',' ','n','i','c','e'}
আউটপুট: {'n','i','c','e',' ','i','s',' ','m','a','n',' ','t','h','e'}
#includeusing namespace std; void print_vector(vector v){ cout << "["; for(int i = 0; i < v.size(); i++){ cout << v[i] << ", "; } cout << "]" << endl; } class Solution { public: void reverseWords(vector & 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); } }; int main(){ Solution ob; vector v = {'t','h','e',' ','m','a','n',' ','i','s',' ','n','i','c','e'}; ob.reverseWords(v); print_vector(v); return 0; }
উপরোক্ত কোড রান করলে আউটপুট:
[n, i, c, e, , i, s, , m, a, n, , t, h, e, ]