समस्या कथन
एक स्ट्रिंग को देखते हुए, हमें समान स्ट्रिंग प्राप्त करने के लिए आवश्यक न्यूनतम संख्या में घुमावों को खोजने की आवश्यकता है
उदाहरण
यदि इनपुट स्ट्रिंग "bbbbbb" है तो न्यूनतम 1 रोटेशन आवश्यक है
एल्गोरिदम
1. Initialize result = 0 2. Make a temporary string equals to original string concatenated with itself. 3. Take the substring of temporary string of size same as original string starting from second character i.e. index 1 4. Increment the counter 5. Check whether the substring becomes equal to original string. If yes, then break the loop. Else go to step 2 and repeat it from the next index
उदाहरण
#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