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

C++-এ স্ট্রিং-এ শব্দগুলো রিভার্স করা


ধরুন আমাদের কয়েকটি শব্দসহ একটি স্ট্রিং আছে। আমাদের স্ট্রিং-এ শব্দ들의 পজিশন রিভার্স করতে হবে। ইনপুট স্ট্রিং “The quick brown fox jumps over a lazy dog” হলে

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

  • getString() ফাংশন ডিফাইন করুন, এটি s ইনপুট নেবে, এটি নিচের মতো কাজ করে −

  • i := 0, j := s-এর সাইজ – 1

  • যখন s[i] == ' ' এবং i < s-এর সাইজ, i ১ বাড়ান

  • যখন j >= 0 এবং s[j] == ' ', j ১ কমান

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

  • i <= j পর্যন্ত i ১ বাড়িয়ে লুপ চালান

    • যদি ret-এর সাইজ নন-জিরো এবং ret-এর লাস্ট এলিমেন্ট ' ' এবং s[i] ' ' হয়, তবে পরবর্তী ইটারেশনে যান

    • ret := ret + s[i]

  • reverseWords() মেথড ডিফাইন করুন, এটি s ইনপুট নেবে

  • j := 0

  • i = 0 থেকে s-এর সাইজ – 1 পর্যন্ত লুপ, প্রতিটি স্টেপে i := j সেট করুন

    • যদি s[i] ব্ল্যাঙ্ক হয়, তবে j := i + 1

    • অন্যথায়

      • যখন j + 1 < s-এর সাইজ এবং s[j + 1] স্পেস নয়, j ১ বাড়ান

      • x := i, y := j

      • যখন x < y

        • s[x] এবং s[y] এক্সচেঞ্জ করুন, x ১ বাড়ান, y ১ কমান

      • j ১ বাড়ান

  • মেইন মেথড থেকে:

  • স্ট্রিং s রিভার্স করুন

  • reverseWords(s) কল করুন

  • getString(s) রিটার্ন করুন

উদাহরণ (C++)

নিচের ইমপ্লিমেন্টেশন দেখুন ভালো বুঝতে −

#include <bits/stdc++.h> using namespace std; class Solution { public:    string reverseWords(string s) {       reverse(s.begin(), s.end());       reverseWordss(s);       return getString(s);    }    string getString(string s){       int i = 0;       int j = s.size() - 1;       while(s[i] == ' ' && i < s.size()) i++;       while(j >= 0 && s[j] == ' ') j--;       string ret = "";       for(;i <= j; i++){          if(ret.size() && ret.back() == ' ' && s[i] == ' ')continue;          ret += s[i];       }       return ret;    }    void reverseWordss(string& s){       int j = 0;       for(int i = 0; i < s.size() ;i = j){          if(s[i] == ' '){             j = i + 1;          }          else{             while(j + 1 < s.size() && s[j + 1] != ' ') j++;             int x = i;             int y = j;             while(x < y){                swap(s[x], s[y]);                x++;                y--;             }             j++;          }       }      } }; main(){    Solution ob;    cout << (ob.reverseWords("The quick brown fox jumps over a lazy dog")); }

ইনপুট

"The quick brown fox jumps over a lazy dog"

আউটপুট

"dog lazy a over jumps fox brown quick The"
  1. C#-এ দেওয়া স্ট্রিংয়ের শব্দগুলো রিভার্স করা (Reverse Words)

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

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

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