কম্পিউটার

C++ এ একটি বাক্যে শব্দগুলোকে পুনরায় সাজান


ধরুন আমাদের কাছে বিভিন্ন শব্দের একটি স্ট্রিং আছে, সেই স্ট্রিংটিকে বাক্য বলা হয়, এবং এটি নিম্নলিখিত বিন্যাসে -

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

  • পাঠ্যের প্রতিটি শব্দ একটি একক স্পেস অক্ষর দ্বারা পৃথক করা হয়৷

আমাদের পাঠ্যের শব্দগুলিকে এমনভাবে সাজাতে হবে যাতে সমস্ত শব্দ তাদের দৈর্ঘ্যের ক্রমবর্ধমান ক্রমে পুনর্বিন্যাস করা হয়। দুটি শব্দের দৈর্ঘ্য একই হলে, তাদের মূল ক্রমে সাজান।

তারপর অবশেষে এই নিয়মগুলি প্রয়োগ করে স্ট্রিংটি ফেরত দিন৷

সুতরাং, যদি ইনপুটটি হয় "আমি সিপিপিতে কোড করতে ভালোবাসি", তাহলে আউটপুট হবে "সিপিপি প্রেম কোডে আই টু"

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • পাঠ্যের প্রথম অক্ষরটিকে ছোট অক্ষরে করুন

  • একটি অ্যারে সংজ্ঞায়িত করুন x :=স্থান ব্যবহার করে পাঠ্য বিভক্ত করার পরে সমস্ত শব্দ রাখুন

  • জোড়ার একটি অ্যারে সংজ্ঞায়িত করুন

  • আরম্ভ করার জন্য i :=0, যখন i

    • s

      এর শেষে {x[i],i} ঢোকান
  • দৈর্ঘ্যের উপর ভিত্তি করে অ্যারে সাজান, যদি দৈর্ঘ্য একই হয় সূচক মান ব্যবহার করুন

  • ret :=খালি স্ট্রিং

  • আরম্ভ করার জন্য i :=0, যখন i

    • ret :=ret concatenate s[i>

      এর প্রথম উপাদান
    • যদি i s এর আকারের সমান না হয়, তাহলে −

      • ret :=ফাঁকা জায়গা দিয়ে ret concatenate

  • রেট টু ক্যাপিটালের প্রথম অক্ষর তৈরি করুন

  • রিটার্ন রিটার্ন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

#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;
   }
   static bool a(string& a, string& b){
      return a.size() < b.size();
   }
   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;
   }
};
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. C++ প্রোগ্রাম Recursion ব্যবহার করে একটি বাক্যকে বিপরীত করতে

  2. C++ এ একটি স্ট্রিংকে টোকেনাইজ করবেন?

  3. পাইথন প্রোগ্রামে একটি বাক্যে শব্দ গণনা করুন

  4. একটি বাক্যে শব্দ গণনা করার জন্য পাইথন প্রোগ্রাম