Skip to content
Related Articles

Related Articles

Python3 Program to Check if all rows of a matrix are circular rotations of each other

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

Given a matrix of n*n size, the task is to find whether all rows are circular rotations of each other or not. 

Examples: 

Input: mat[][] = 1, 2, 3
                 3, 1, 2
                 2, 3, 1
Output:  Yes
All rows are rotated permutation
of each other.

Input: mat[3][3] = 1, 2, 3
                   3, 2, 1
                   1, 3, 2
Output:  No
Explanation : As 3, 2, 1 is not a rotated or 
circular permutation of 1, 2, 3

The idea is based on below article. 
A Program to check if strings are rotations of each other or not

Steps :  

  1. Create a string of first row elements and concatenate the string with itself so that string search operations can be efficiently performed. Let this string be str_cat.
  2. Traverse all remaining rows. For every row being traversed, create a string str_curr of current row elements. If str_curr is not a substring of str_cat, return false.
  3. Return true.

Below is the implementation of above steps. 

Python3




# Python3 program to check if all rows 
# of a matrix are rotations of each other 
  
MAX = 1000
  
# Returns true if all rows of mat[0..n-1][0..n-1] 
# are rotations of each other. 
def isPermutedMatrix(mat, n) :
      
    # Creating a string that contains 
    # elements of first row. 
    str_cat = ""
    for i in range(n) :
        str_cat = str_cat + "-" + str(mat[0][i])
  
    # Concatenating the string with itself 
    # so that substring search operations 
    # can be performed on this 
    str_cat = str_cat + str_cat
  
    # Start traversing remaining rows 
    for i in range(1, n) :
          
        # Store the matrix into vector 
        # in the form of strings 
        curr_str = ""
          
        for j in range(n) :
            curr_str = curr_str + "-" + str(mat[i][j])
  
        # Check if the current string is present 
        # in the concatenated string or not 
        if (str_cat.find(curr_str)) : 
            return True
              
    return False
  
# Driver code 
if __name__ == "__main__" :
    n = 4
    mat = [[1, 2, 3, 4], 
           [4, 1, 2, 3], 
           [3, 4, 1, 2], 
           [2, 3, 4, 1]] 
      
    if (isPermutedMatrix(mat, n)):
        print("Yes")
    else :
        print("No")
          
# This code is contributed by Ryuga

Output: 

Yes

Please refer complete article on Check if all rows of a matrix are circular rotations of each other for more details!


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!