Given a string, we need to find the minimum number of rotations required to get the same string. Examples:
Input : s = “geeks”
Output : 5Input : 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 equals 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.
// Java program to determine minimum number // of rotations required to yield same // string. import java.util.*;
class GFG
{ // Returns count of rotations to get the
// same string back.
static int findRotations(String str)
{
// tmp is the concatenated string.
String tmp = str + str;
int n = str.length();
for ( int i = 1 ; i <= n; i++)
{
// substring from i index of original
// string size.
String substring = tmp.substring(
i, i+str.length());
// if substring matches with original string
// then we will come out of the loop.
if (str.equals(substring))
return i;
}
return n;
}
// Driver Method
public static void main(String[] args)
{
String str = "aaaa" ;
System.out.println(findRotations(str));
}
} /* This code is contributed by Mr. Somesh Awasthi */ |
Output:
3
Time Complexity: O(n2) Please refer complete article on Minimum rotations required to get the same string for more details!
Auxiliary Space: O(n), The extra space is used to store the copied string in tmp variable.