C++ Program for Minimum rotations required to get the same string
Last Updated :
28 Dec, 2022
Given a string, we need to find the minimum number of rotations required to get the same string.
Examples:
Input : s = "geeks"
Output : 5
Input : s = "aaaa"
Output : 1
The idea is based on below post.
A Program to check if strings are rotations of each other or not
- Step 1: Initialize result = 0 (Here result is count of rotations
- Step 2: Take a temporary string equal to original string concatenated with itself.
- Step 3: Now take the substring of temporary string of size same as original string starting from second character (or index 1).
- Step 4: Increase the count.
- Step 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.
Below is the implementation of the above approach:
C++
#include <iostream>
using namespace std;
int findRotations(string str)
{
string tmp = str + str;
int n = str.length();
for ( int i = 1; i <= n; i++) {
string substring = tmp.substr(i, str.size());
if (str == substring)
return i;
}
return n;
}
int main()
{
string str = "abc" ;
cout << findRotations(str) << endl;
return 0;
}
|
Time Complexity: O(n2)
Auxiliary Space: O(n)
Please refer complete article on Minimum rotations required to get the same string for more details!
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...