Php Program to Check if all rows of a matrix are circular rotations of each other
Last Updated :
11 Jul, 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 the below article.
A Program to check if strings are rotations of each other or not
Steps :
- 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.
- 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.
- Return true.
Below is the implementation of the above steps.
PHP
<?php
$MAX = 1000;
function isPermutedMatrix( & $mat , $n )
{
$str_cat = "" ;
for ( $i = 0 ; $i < $n ; $i ++)
$str_cat = $str_cat . "-" .
strval ( $mat [0][ $i ]);
$str_cat = $str_cat . $str_cat ;
for ( $i = 1; $i < $n ; $i ++)
{
$curr_str = "" ;
for ( $j = 0 ; $j < $n ; $j ++)
$curr_str = $curr_str . "-" .
strval ( $mat [ $i ][ $j ]);
if ( strpos ( $str_cat , $curr_str ))
return true;
}
return false;
}
$n = 4;
$mat = array ( array (1, 2, 3, 4),
array (4, 1, 2, 3),
array (3, 4, 1, 2),
array (2, 3, 4, 1));
if (isPermutedMatrix( $mat , $n ))
echo "Yes" ;
else
echo "No" ;
?>
|
Time complexity : O(n3)
Auxiliary Space : O(n)
Please refer complete article on Check if all rows of a matrix are circular rotations of each other for more details!
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...