2
def containsCycle(self, grid: List[List[str]]) -> bool:4
def getNeighbours(row, col, char):6
if row > 0 and grid[row - 1][col] == char and not visited[row - 1][col]:7
neighbours.append([row - 1, col])8
if col > 0 and grid[row][col - 1] == char and not visited[row][col - 1]:9
neighbours.append([row, col - 1])12
and grid[row + 1][col] == char13
and not visited[row + 1][col]15
neighbours.append([row + 1, col])17
col < len(grid[0]) - 118
and grid[row][col + 1] == char19
and not visited[row][col + 1]21
neighbours.append([row, col + 1])24
def dfs(row, col, char, cyclePresent):25
if visited[row][col] or cyclePresent:28
visited[row][col] = True29
neighbours = getNeighbours(row, col, char)30
for r, c in neighbours:31
cyclePresent = dfs(r, c, char, cyclePresent)34
visited = [[False for _ in range(len(grid[0]))] for _ in range(len(grid))]36
for row in range(len(grid)):37
for col in range(len(grid[0])):42
cyclePresent = dfs(row, col, grid[row][col], cyclePresent)