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

C++-এ বাক্যে শব্দ রি-অ্যারেঞ্জ


একটি বাক্য দেওয়া আছে যেখানে প্রথম অক্ষর বড় হাতের এবং শব্দগুলো স্পেস দিয়ে আলাদা। শব্দগুলো দৈর্ঘ্য অনুযায়ী বর্ধমান ক्रमে সাজাতে হবে। সমান দৈর্ঘ্যের শব্দগুলো původিক ক্রমে থাকবে। প্রথম অক্ষর বড় হাতের করে রিটার্ন করব।

ইনপুট: "I love to code in cpp" → আউটপুট: "I to in cpp love code"

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

  • প্রথম অক্ষর ছোট হাতের করব

  • স্পেস দিয়ে শব্দগুলো ভাগ করব

  • প্রতিটি শব্দের সাথে এর ইনডেক্স রাখব পেয়ারে

  • দৈর্ঘ্য ও ইনডেক্স অনুযায়ী স্ট্রেবল সর্ট করব

  • শব্দগুলো জড়িয়ে নতুন বাক্য বানাব

  • প্রথম অক্ষর বড় হাতের করব

উদাহরণ

নিচের কোডটি দেখুন −

#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;
    }
    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;
    }
};

int main() {
    Solution ob;
    cout << (ob.arrangeWords("I love to code in cpp"));
}

ইনপুট

"I love to code in cpp"

আউটপুট

I to in cpp love code

  1. রিকার্সন ব্যবহার করে সেন্টেন্স রিভার্স (Reverse) করার C++ প্রোগ্রাম

  2. C++-এ স্ট্রিং টোকেনাইজ (Tokenize) করা

  3. পাইথন প্রোগ্রাম সেন্টেন্সে ওয়ার্ড কাউন্ট করা

  4. পাইথনে সেন্টেন্সে শব্দ গণনা করা