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 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.
PHP
<?php
function findRotations( $str )
{
$tmp = ( $str + $str );
$n = strlen ( $str );
for ( $i = 1; $i <= $n ; $i ++)
{
$substring = $tmp . substr ( $i ,
strlen ( $str ));
if ( $str == $substring )
return $i ;
}
return $n ;
}
$str = "abc" ;
echo findRotations( $str ), "
";
?>
|
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.