Horje
Python3 Program to Check if a string can be obtained by rotating another string 2 places

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!




Reffered: https://www.geeksforgeeks.org


DSA

Related
Python3 Program to Minimize characters to be changed to make the left and right rotation of a string same Python3 Program to Minimize characters to be changed to make the left and right rotation of a string same
Maximize card deck count that can be formed from cards of given type and joker Maximize card deck count that can be formed from cards of given type and joker
Java Program To Check Whether Two Strings Are Anagram Java Program To Check Whether Two Strings Are Anagram
Python Program For Finding Intersection Point Of Two Linked Lists Python Program For Finding Intersection Point Of Two Linked Lists
Java Program For Removing Middle Points From a Linked List Of Line Segments Java Program For Removing Middle Points From a Linked List Of Line Segments

Type:
Geek
Category:
Coding
Sub Category:
Tutorial
Uploaded by:
Admin
Views:
9