用 Python 检查矩阵的所有行是否彼此循环旋转


假设,我们得到一个大小为 n*n 的矩阵,其中包含整数。我们必须找出该矩阵的所有行是否都是其前一行的循环旋转。对于第一行,它应该是第 n 行的循环旋转。

因此,如果输入如下所示

BADC
CBAD
DCBA
ADCB

则输出将为 True。

为了解决这个问题,我们将遵循以下步骤:

  • concat := 空字符串
  • 对于 i 从 0 到行数,执行
    • concat := concat 连接 "-" 连接 matrix[0,i]
  • concat := concat 连接 concat
  • 对于 i 从 1 到矩阵大小,执行
    • curr_row := 空字符串
    • 对于 j 从 0 到列数,执行
      • curr_row := curr_row 连接 "-" 连接 matrix[i,j]
    • 如果 curr_row 存在于字符串 concat 中,则
      • 返回 True
  • 返回 False

示例

让我们看看以下实现以更好地理解:

 实时演示

def solve(matrix) :
   concat = ""
   for i in range(len(matrix)) :
      concat = concat + "-" + str(matrix[0][i])
   concat = concat + concat
   for i in range(1, len(matrix)) :
      curr_row = ""
      for j in range(len(matrix[0])) :
         curr_row = curr_row + "-" + str(matrix[i][j])
      if (concat.find(curr_row)) :
         return True
   return False
matrix = [['B', 'A', 'D', 'C'],
         ['C', 'B', 'A', 'D'],
         ['D', 'C', 'B', 'A'],
         ['A', 'D', 'C', 'B']]
print(solve(matrix))

输入

[['B', 'A', 'D', 'C'],
['C', 'B', 'A', 'D'],
['D', 'C', 'B', 'A'],
['A', 'D', 'C', 'B']]

输出

True

更新于: 2021年1月18日

146 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告