用 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 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告