# Minimum rotations required to get the same string

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
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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.

## C/C++

 `// C++ program to determine minimum number ` `// of rotations required to yield same ` `// string. ` `#include ` `using` `namespace` `std; ` ` `  `// Returns count of rotations to get the ` `// same string back. ` `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.substr(i, str.size()); ` ` `  `        ``// if substring matches with original string ` `        ``// then we will come out of the loop. ` `        ``if` `(str == substring) ` `            ``return` `i; ` `    ``} ` `    ``return` `n; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``string str = ``"abc"``; ` `    ``cout << findRotations(str) << endl; ` `    ``return` `0; ` `} `

## Java

 `// 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, str.length()); ` `     `  `            ``// if substring matches with original string ` `            ``// then we will come out of the loop. ` `            ``if` `(str == substring) ` `                ``return` `i; ` `        ``} ` `        ``return` `n; ` `    ``} ` ` `  `    ``// Driver Method ` `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` `            ``String str = ``"abc"``; ` `        ``System.out.println(findRotations(str)); ` `    ``} ` `} ` `/* This code is contributed by Mr. Somesh Awasthi */`

## Python3

 `# Python 3 program to determine minimum  ` `# number of rotations required to yield  ` `# same string. ` ` `  `# Returns count of rotations to get the ` `# same string back. ` `def` `findRotations(``str``): ` `     `  `    ``# tmp is the concatenated string. ` `    ``tmp ``=` `str` `+` `str` `    ``n ``=` `len``(``str``) ` ` `  `    ``for` `i ``in` `range``(``1``, n ``+` `1``): ` `         `  `        ``# substring from i index of  ` `        ``# original string size. ` `        ``substring ``=` `tmp[i: n] ` ` `  `        ``# if substring matches with  ` `        ``# original string then we will  ` `        ``# come out of the loop. ` `        ``if` `(``str` `=``=` `substring): ` `            ``return` `i ` `    ``return` `n ` ` `  `# Driver code ` `if` `__name__ ``=``=` `'__main__'``: ` ` `  `    ``str` `=` `"abc"` `    ``print``(findRotations(``str``)) ` ` `  `# This code is contributed  ` `# by 29AjayKumar. `

## C#

 `// C# program to determine minimum number ` `// of rotations required to yield same ` `// string. ` `using` `System; ` ` `  `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, str.Length); ` `     `  `            ``// if substring matches with ` `            ``// original string then we will ` `            ``// come out of the loop. ` `            ``if` `(str == substring) ` `                ``return` `i; ` `        ``} ` `         `  `        ``return` `n; ` `    ``} ` ` `  `    ``// Driver Method ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``String str = ``"abc"``; ` `         `  `        ``Console.Write(findRotations(str)); ` `    ``} ` `} ` ` `  `// This code is contributed by nitin mittal. `

## PHP

 ` `

Output:

```3
```

Time Complexity: O(n2)

This article is contributed by Jatin Goyal. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.