Given two strings, the task is to find if a string can be obtained by rotating another string two places.
Examples:
Input: string1 = “amazon”, string2 = “azonam”
Output: Yes
// rotated anti-clockwise
Input: string1 = “amazon”, string2 = “onamaz”
Output: Yes
// rotated clockwise
Asked in: Amazon Interview
1- There can be only two cases: a) Clockwise rotated b) Anti-clockwise rotated 2- If clockwise rotated that means elements are shifted in right. So, check if a substring[2.... len-1] of string2 when concatenated with substring[0,1] of string2 is equal to string1. Then, return true. 3- Else, check if it is rotated anti-clockwise that means elements are shifted to left. So, check if concatenation of substring[len-2, len-1] with substring[0....len-3] makes it equals to string1. Then return true. 4- Else, return false.
Below is the implementation of the above approach.
Python3
# Python 3 program to check if a string # is two time rotation of another string. # Function to check if string2 is # obtained by string 1 def isRotated(str1, str2):
if ( len (str1) ! = len (str2)):
return False
if ( len (str1) < 2 ):
return str1 = = str2
clock_rot = ""
anticlock_rot = ""
l = len (str2)
# Initialize string as anti-clockwise
# rotation
anticlock_rot = (anticlock_rot +
str2[l - 2 :] +
str2[ 0 : l - 2 ])
# Initialize string as clock wise
# rotation
clock_rot = clock_rot + str2[ 2 :] + str2[ 0 : 2 ]
# check if any of them is equal to string1
return (str1 = = clock_rot or
str1 = = anticlock_rot)
# Driver code if __name__ = = "__main__" :
str1 = "geeks"
str2 = "eksge"
if isRotated(str1, str2):
print ( "Yes" )
else :
print ( "No" )
# This code is contributed by ita_c |
Output:
Yes
Time Complexity: O(n), where n is the size of the given strings.
Please refer complete article on Check if a string can be obtained by rotating another string 2 places for more details!