কম্পিউটার টিউটোরিয়াল

C++-এ স্ট্রিং-II-তে শব্দ উল্টানো


ধরা যাক একটি ইনপুট স্ট্রিং আছে (ক্যারেক্টার অ্যারে হিসেবে), আমাদের শব্দগুলো রিভার্স করতে হবে কিন্তু অক্ষরগুলো নয়।

যেমন, ইনপুট হলে ['t','h','e',' ','m','a','n',' ','i','s',' ','n','i','c','e'], তবে আউটপুট হবে ['n','i','c','e',' ','i','s',' ','m','a','n',' ','t','h','e']

সমাধানের ধাপগুলো:

  • পুরো অ্যারে s রিভার্স করব

  • j := 0, n := s.size()

  • প্রতি i এর জন্য 0 থেকে n-1 পর্যন্ত:

    • যদি s[i] == ' ' হয়, তবে:

      • s কে j থেকে i পর্যন্ত রিভার্স করব

      • j := i + 1

  • শেষে s কে j থেকে n পর্যন্ত রিভার্স করব

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন −

#include <bits/stdc++.h>
using namespace std;

void print_vector(vector<char> 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);
    }
};

int 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, ]

  1. C#-এ দেওয়া স্ট্রিংয়ের শব্দগুলো রিভার্স করা (Reverse Words)

  2. C#-এ স্ট্রিং রিভার্স (Reverse a String)

  3. C#-এ স্ট্রিংয়ের শব্দগুলো রিভার্স করা

  4. পাইথনে স্ট্রিং-এর শব্দগুলো উল্টে দেওয়া