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 1def 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 codeif __name__ == "__main__": str1 = "neveropen" 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!
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
