ধরুন একটি স্ট্রিং S আছে। S-এর সমস্ত অক্ষর ছোট হাতের অক্ষরে। তারপর, আমরা যেকোনো সংখ্যক চালনা করতে পারি।
এখানে, প্রতিটি পদক্ষেপে, আমরা প্রথম K অক্ষরগুলির মধ্যে একটি বেছে নিই, এবং এটি সরিয়ে ফেলি এবং স্ট্রিংয়ের শেষে এটি স্থাপন করি। যেকোন সংখ্যক চালনার পরে আমাদেরকে অভিধানগতভাবে সবচেয়ে ছোট স্ট্রিংটি খুঁজে বের করতে হবে।
সুতরাং, ইনপুট যদি "cabaa" এবং K =3 এর মত হয়, তাহলে আউটপুট হবে "aaabc"
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
যদি K> 1, তাহলে −
-
S
অ্যারে সাজান -
S
ফেরত দিন
-
-
ret :=S
-
n :=S
এর আকার -
আরম্ভ করার জন্য i :=1, যখন i
-
S :=S-এর প্রথম অক্ষরটি কেটে নিন এবং শেষে S
এ যোগ করুন -
যদি S
-
ret =S
-
-
-
রিটার্ন রিটার্ন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#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; } }; main(){ Solution ob; cout << (ob.orderlyQueue("cabaa", 3)); }
ইনপুট
"cabaa", 3
আউটপুট
aaabc