ปัญหา
กำหนด Matrix n×n ตรวจสอบว่าแถวทุกแถวเป็น Circular Rotation ของแถวก่อนหน้า (แถวแรกเป็น Rotation ของแถวสุดท้าย)
ตัวอย่าง 4×4: B A D C / C B A D / D C B A / A D C B → True
แนวทางแก้ปัญหา
- สร้าง String
concatจากแถวแรก (คั่นด้วย -) - Duplicate:
concat = concat + concat - ตรวจสอบว่า String ของแต่ละแถวถัดไป เป็น Substring ของ
concatหรือไม่
ตัวอย่างโค้ด
def solve(matrix):
concat = ""
for i in range(len(matrix)):
concat += "-" + str(matrix[0][i])
concat += concat # duplicate
for i in range(1, len(matrix)):
curr_row = ""
for j in range(len(matrix[0])):
curr_row += "-" + str(matrix[i][j])
if concat.find(curr_row) == -1:
return False
return True
matrix = [['B','A','D','C'],
['C','B','A','D'],
['D','C','B','A'],
['A','D','C','B']]
print(solve(matrix)) # Trueอินพุต / เอาต์พุต
Input: [['B','A','D','C'], ['C','B','A','D'], ['D','C','B','A'], ['A','D','C','B']] Output: True