Welcome to the daily solutions of our PROBLEM OF THE DAY (POTD). We will discuss the entire problem step-by-step and work towards developing an optimized solution. This will not only help you brush up on your concepts of String but will also help you build up problem-solving skills.

POTD 14 November: Check if strings are rotations of each other or not
You are given two strings of equal lengths, s1 and s2. The task is to check if s2 is a rotated version of the string s1.
Note:Â The characters in the strings are in lowercase.
Examples:
Input: s1 = "geeksforgeeks", s2 = "forgeeksgeeks"
Output: 1
Explanation:
s1 is geeksforgeeks, s2 is forgeeksgeeks. Clearly, s2 is a rotated version of s1 as s2 can be obtained by left-rotating s1 by 5 units.Input: s1 = "mightandmagic", s2="andmagicmigth"
Output: 0
Explanation: Here with any amount of rotation s2 can't be obtained by s1.
Check if strings are rotations of each other or not using Strings:
The idea is to create a temp string and store the concatenation of s1 to s1 in temp, i.e temp = s1+s1. Check if s2 is a substring of temp then s1 and s2 are rotations of each other.
Illustration:
s1 = âABACDâ, s2 = âCDABAâ
temp = s1.s1 = âABACDABACDâ
Since s2 is a substring of temp, s1 and s2 are rotations of each other.
Below is the implementation of the above approach:
class Solution {
public:
// Function to check if two strings are rotations of
// each other or not.
bool areRotations(string s1, string s2)
{
// if s1 and s2 are unequal then it is not possoble
// to get one from other by rotation.
if (s1.length() != s2.length())
return false;
// concatenating s1 with s2
string temp = s1 + s1;
// check if s2 is substring of temp or not
return (temp.find(s2) != string::npos);
}
};
class Solution {
// Function to check if two strings are rotations of
// each other or not.
public static boolean areRotations(String s1, String s2)
{
// There lengths must be same and str2 must be
// a substring of str1 concatenated with str1.
return (s1.length() == s2.length())
&& ((s1 + s1).indexOf(s2) != -1);
}
}
class Solution:
# Function to check if two strings are rotations of each other or not.
def areRotations(self, s1, s2):
size1 = len(s1)
size2 = len(s2)
temp = ''
# Check if sizes of two strings are same
if size1 != size2:
return 0
# Create a temp string with value str1.str1
temp = s1 + s1
# Now check if str2 is a substring of temp
# string.count returns the number of occurrences of
# the second string in temp
if (temp.count(s2) > 0):
return 1
else:
return 0
Time Complexity:Â O(N), where N is the length of the string.
Auxiliary Space:Â O(N)