কম্পিউটার

অভিধানগতভাবে ন্যূনতম স্ট্রিং ঘূর্ণন


আসুন বিবেচনা করা যাক একটি স্ট্রিং দেওয়া হয়েছে, আমরা জানি যে স্ট্রিংটি অক্ষরের একটি ক্রম। লেক্সিকোগ্রাফিক্যাল ঘূর্ণন হল স্ট্রিং এর ঘূর্ণন, যাতে অক্ষরকে অভিধানের ক্রমে রূপান্তর করা হয়।

সমাধানটি সহজ, আমরা কেবল প্রদত্ত স্ট্রিংটিকে নিজের সাথে সংযুক্ত করি, তারপর অন্য অ্যারেতে, সমস্ত স্ট্রিংগুলির ঘূর্ণন সংরক্ষণ করা হয়। এর পরে অ্যারেটিকে আরোহী ক্রমে সাজান, সর্বনিম্ন মান হল চূড়ান্ত ফলাফল।

ইনপুট এবং আউটপুট

Input:
The String “BCAAFAABCD”
Output:
Rotated String: “AABCDBCAAF”

অ্যালগরিদম

minStrRotation(str)

ইনপুট −৷ প্রদত্ত স্ট্রিং।

আউটপুট − ন্যূনতম স্ট্রিং রোটেশন প্রয়োজন।

Begin
   n := length of str
   define strArr to store all rotations
   tempStr := concatenate str with str again

   for i := 0 to n, do
      strArr[i] := substring of tempStr from (i to n)
   done

   sort the strArr
   return strArr[0]
End

উদাহরণ

#include <iostream>
#include <algorithm>
using namespace std;

string minStrRotation(string str) {
   int n = str.size();
   string strArray[n];    //array to store all rotations of str
   string tempStr = str + str;    //concatinate str two times

   for (int i = 0; i < n; i++)
      strArray[i] = tempStr.substr(i, n);    //get sub string from ith index to nth index
   sort(strArray, strArray+n);
   return strArray[0];    //The first index is the result
}

int main() {
   string str;
   cout << "Enter String: "; cin >> str;
   cout << "Rotated String: " << minStrRotation(str);
}

আউটপুট

Enter String: BCAAFAABCD
Rotated String: AABCDBCAAF

  1. C# এ একটি স্ট্রিংয়ের অক্ষর অদলবদল করা

  2. একটি স্ট্রিং ঘোরানোর জন্য C# এ স্ট্রিং স্লাইসিং

  3. একটি স্ট্রিং C# এ একটি সংখ্যা হলে আমি কিভাবে সনাক্ত করব?

  4. পাইথনে একটি প্রদত্ত স্ট্রিং তৈরি করার জন্য সর্বনিম্ন খরচ নির্ধারণ করার জন্য প্রোগ্রাম