Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

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

  • 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. 

Java




// Java program to check if all rows of a matrix 
// are rotations of each other 
class GFG 
{
  
    static int MAX = 1000;
  
    // Returns true if all rows of mat[0..n-1][0..n-1] 
    // are rotations of each other. 
    static boolean isPermutedMatrix(int mat[][], int n) 
    {
        // Creating a string that contains
        // elements of first row. 
        String str_cat = "";
        for (int i = 0; i < n; i++) 
        {
            str_cat = str_cat + "-" + String.valueOf(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 (int i = 1; i < n; i++)
        {
            // Store the matrix into vector in the form 
            // of strings 
            String curr_str = "";
            for (int j = 0; j < n; j++) 
            {
                curr_str = curr_str + "-" + String.valueOf(mat[i][j]);
            }
  
            // Check if the current string is present in 
            // the concatenated string or not 
            if (str_cat.contentEquals(curr_str)) 
            {
                return false;
            }
        }
  
        return true;
    }
  
    // Drivers code 
    public static void main(String[] args) 
    {
        int n = 4;
        int mat[][] = {{1, 2, 3, 4},
        {4, 1, 2, 3},
        {3, 4, 1, 2},
        {2, 3, 4, 1}
        };
        if (isPermutedMatrix(mat, n)) 
        {
            System.out.println("Yes");
        }
        else
        {
            System.out.println("No");
        }
    }
}
  
/* This code contributed by PrinciRaj1992 */

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!