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

একই স্ট্রিং পাওয়ার জন্য ন্যূনতম রোটেশন C++-তে


সমস্যা বিবরণ

একটি স্ট্রিং দেওয়া আছে, আমাদের একই স্ট্রিং পাওয়ার জন্য ন্যূনতম রোটেশন সংখ্যা বের করতে হবে।

উদাহরণ

ইনপুট স্ট্রিং "bbbbb" হলে ন্যূনতম ১ রোটেশন দরকার।

অ্যালগরিদম

1. result = 0 ইনিশিয়ালাইজ করুন
2. একটি টেম্পোরারি স্ট্রিং বানান মূল স্ট্রিং নিজের সাথে কনক্যাটিনেট করে।
3. টেম্পোরারি স্ট্রিং থেকে মূল স্ট্রিংর আকারের সাবস্ট্রিং নিন দ্বিতীয় ক্যারেক্টার থেকে (ইনডেক্স ১)।
4. কাউন্টার বাড়ান।
5. চেক করুন সাবস্ট্রিং মূল স্ট্রিংর সমান কিনা। হ্যাঁ হলে লুপ ব্রেক করুন। না হলে পরবর্তী ইনডেক্স থেকে ধাপ ২ রিপিট করুন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int getRotationCount(string str) {
    string temp = str + str;
    int n = str.length();
    for (int i = 1; i <= n; ++i) {
        string sub = temp.substr(i, str.size());
        if (str == sub) {
            return i;
        }
    }
    return n;
}
int main() {
    string str = "bbbbb";
    cout << "Rotation count = " << getRotationCount(str) << endl;
    return 0;
}

উপরের প্রোগ্রাম কম্পাইল ও এক্সিকিউট করলে নিচের আউটপুট জেনারেট হবে

আউটপুট

Rotation count = 1

  1. C++ কোড: রটারি ডায়ালে স্ট্রিং প্রিন্ট করার জন্য ঘুরানোর সংখ্যা গণনা

  2. C++ প্রোগ্রাম: শত্রুকে পরাজয় করতে ন্যূনতম অপারেশন গণনা

  3. C++ দিয়ে অ্যারেতে প্রথম স্ট্রিং বের করা যার রিভার্সও অ্যারেতে আছে

  4. C++-এ প্রতিপক্ষকে ধরতে ন্যূনতম রাউন্ড সংখ্যা বের করা