Skip to content
Related Articles

Related Articles

Python3 Program to Find Lexicographically smallest rotated sequence | Set 2

Improve Article
Save Article
Like Article
  • Last Updated : 10 Jan, 2022

Write code to find lexicographic minimum in a circular array, e.g. for the array BCABDADAB, the lexicographic minimum is ABBCABDAD
Input Constraint: 1 < n < 1000 
Examples: 
 

Input:  GEEKSQUIZ
Output: EEKSQUIZG

Input:  GFG
Output: FGG

Input :  CAPABCQ
Output : ABCQCAP

 

We have discussed a O(n2Logn) solution in Lexicographically minimum string rotation | Set 1. Here we need to find the starting index of minimum rotation and then print the rotation.
 

1) Initially assume 0 to be current min 
   starting index.
2) Loop through i = 1 to n-1.
   a) For each i compare sequence starting 
      at i with current min starting index
   b) If sequence starting at i is lexicographically 
      smaller, update current min starting 
      index.

Here is pseudo-code for algorithm 
 

function findIndexForSmallestSequence(S, n):
    result = 0
    for i = 1:n-1
        if (sequence beginning at i < 
               sequence beginning at result)
            result = i
        end if
    end for
    return result

Here is implementation of above algorithm. 
 

Python 3




# Python 3 program to find lexicographically
# smallest sequence with rotations.
  
# Function to compare lexicographically
# two sequence with different starting
# indexes. It returns true if sequence
# beginning with y is lexicographically
# greater.
import copy
  
  
def printSmallestSequence(s):
    m = copy.copy(s)
    for i in range(len(s) - 1):
  
        if m > s[i:] + s[:i]:
            m = s[i:] + s[:i]
  
    return m
  
#Driver Code
if __name__ == '__main__':
  
    st = 'DCACBCAA'
    print(printSmallestSequence(st))
  
  
# This code is contributed by Koushik Reddy B


Output: 
 

AADCACBC

Time Complexity : O(n^2) 
Auxiliary Space : O(1)
Please refer complete article on Lexicographically smallest rotated sequence | Set 2 for more details!

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!