String slicing in Python to Rotate a String
Given a string of size n, write functions to perform following operations on string.
- Left (Or anticlockwise) rotate the given string by d elements (where d <= n).
- Right (Or clockwise) rotate the given string by d elements (where d <= n).
Examples:
Input : s = "GeeksforGeeks"
d = 2
Output : Left Rotation : "eksforGeeksGe"
Right Rotation : "ksGeeksforGee"
Input : s = "qwertyu"
d = 2
Output : Left rotation : "ertyuqw"
Right rotation : "yuqwert"
Rotate string for string slicing
We have existing solution for this problem please refer Left Rotation and Right Rotation of a String link. We will solve this problem quickly in python using String Slicing. Approach is very simple,
- Separate string in two parts first & second, for Left rotation Lfirst = str[0 : d] and Lsecond = str[d :]. For Right rotation Rfirst = str[0 : len(str)-d] and Rsecond = str[len(str)-d : ].
- Now concatenate these two parts second + first accordingly.
Implementation:
Python3
def rotate( input ,d):
Lfirst = input [ 0 : d]
Lsecond = input [d :]
Rfirst = input [ 0 : len ( input ) - d]
Rsecond = input [ len ( input ) - d : ]
print ( "Left Rotation : " , (Lsecond + Lfirst) )
print ( "Right Rotation : " , (Rsecond + Rfirst))
if __name__ = = "__main__" :
input = 'GeeksforGeeks'
d = 2
rotate( input ,d)
|
Output:
Left Rotation : eksforGeeksGe
Right Rotation : ksGeeksforGee
Using extending the string
We use extended string to rotate the string. We will solve this problem quickly in python by slicing extended string. Approach is very simple,
Use extended string Extend_str, for Left rotation Lfirst = Extended_str[n : l1+n] . For Right rotation Rfirst = str[l1-n : l2-n].
Now print this string.
Implementation:
Python3
def rotate(str1,n):
temp = str1 + str1
l1 = len (str1)
l2 = len (temp)
Lfirst = temp[n : l1 + n]
Lfirst = temp[l1 - n : l2 - n]
print ( "Left Rotation : " , Lfirst)
print ( "Right Rotation : " , Lfirst )
if __name__ = = "__main__" :
input = 'GeeksforGeeks'
d = 2
rotate( input ,d)
|
Output
Left Rotation : ksGeeksforGee
Right Rotation : ksGeeksforGee
String slicing in Python to Rotate a String Using deque
Take the input string s and the number of rotations d. Create a deque from the string s. Rotate the deque by d positions to the left or right using the rotate() method. Convert the deque back to a string using join() method and return the rotated string.
Algorithm
1. Take the input string s and the number of rotations d.
2. Create a deque from the string s.
3. If d is positive, rotate the deque to the left by d positions using the rotate() method.
If d is negative, rotate the deque to the right by -d positions using the rotate() method.
4. Convert the deque back to a string using join() method and return the rotated string.
Python3
from collections import deque
def rotate_string(s, d):
deq = deque(s)
if d > 0 :
deq.rotate( - d)
else :
deq.rotate( abs (d))
return ''.join(deq)
s = 'GeeksforGeeks'
d = 2
left_rotated = rotate_string(s, d)
right_rotated = rotate_string(s, - d)
print ( "Left Rotation: " , left_rotated)
print ( "Right Rotation: " , right_rotated)
|
Output
Left Rotation: eksforGeeksGe
Right Rotation: ksGeeksforGee
Time complexity: O(n), where n is the length of the string s.
Auxiliary Space: O(n), where n is the length of the string s.
Last Updated :
30 Jun, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...