String Rotation in Python

Problem statement:

In String Rotation in Python, we are given two strings, we need to find the number of rotations required to match 1 string to another string. If there is no match, print No rotations found.

Code for String Rotation in Python:

# importing deque from collections module
from collections import deque

# declaring 2 string
mystr1 = 'copyassignment'
mystr2 = 'assignmentcopy'

# declaring an empty list
allrotations = []

# finding all rotations of mystr1 and storing them to allrotations
for i in mystr1:
    items = deque(mystr1)
    items.rotate(1)
    mystr1 = list(items)
    mystr1 = ''.join(mystr1)
    allrotations.append(mystr1)

found = False
# checking the mystr2 in allrotations and printing number of rotations required
for i in range(len(allrotations)):
    if mystr2==allrotations[i]:
        found = True
        print(i+1)
else:
    if not found:
        print("No rotations found")

Output:

Output for String Rotation in Python

Explanation:

We will understand the logic behind the code, not the code. So, we have used deque from the collections library to find rotations of a string. Then, we have generated all rotations inside a for loop and stored them in allrotations list. Then, have compared all the rotations with the second string and found the index number of the rotated string which matches and prints its index number. The index number is equal to the number of rotations required to rotate the first string to make it equal to the second string.


Also Read:

Share:

Author: Harry

Hello friends, thanks for visiting my website. I am a Python programmer. I, with some other members, write blogs on this website based on Python and Programming. We are still in the growing phase that's why the website design is not so good and there are many other things that need to be corrected in this website but I hope all these things will happen someday. But, till then we will not stop ourselves from uploading more amazing articles. If you want to join us or have any queries, you can mail me at admin@copyassignment.com Thank you