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

C++-এ অর্ডারলি কিউ (Orderly Queue)

সমস্যা বিবরণ

স্ট্রিং S এবং K দেওয়া থাকলে, প্রতিটি মুভে প্রথম K ক্যারেক্টার থেকে একটা নিয়ে শেষে যুক্ত করতে পারব। যেকোনো সংখ্যক মুভের পর লেক্সিকোগ্রাফিক্যালি সবচেয়ে ছোট স্ট্রিং বের করতে হবে।

উদাহরণ

S = "cabaa", K = 3 → আউটপুট = "aaabc"

সমাধান পদ্ধতি

  • K > 1 হলে যেকোনো পারমুটেশন সম্ভব, তাই স্ট্রিং সর্ট করে রিটার্ন করুন।
  • K = 1 হলে শুধু রোটেশন সম্ভব, সব রোটেশন চেক করে মিনিমাম বের করুন।

C++ বাস্তবায়ন

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

class Solution {
public:
    string orderlyQueue(string S, int K) {
        if (K > 1) {
            sort(S.begin(), S.end());
            return S;
        }
        string ret = S;
        int n = S.size();
        for (int i = 1; i < n; i++) {
            S = S.substr(1) + S.substr(0, 1);
            if (S < ret) ret = S;
        }
        return ret;
    }
};

int main() {
    Solution ob;
    cout << ob.orderlyQueue("cabaa", 3);
    return 0;
}

ইনপুট ও আউটপুট

ইনপুট: "cabaa", 3

আউটপুট: aaabc

  1. C++ Enum: একটি গাইড

  2. C/C++-তে প্রায়োরিটি কিউ (Priority Queue) পরিচিতি

  3. দেওয়া সময়ে কিউ-এর বিন্যাস বের করা (C++)

  4. C++ কিউ ব্যবহার করে BST-এ একটি পথ রিভার্স করুন