← 返回博客列表
Bloomberg

Bloomberg Interview Question: Word Search on Grid

2025-12-11

Problem

Given a 2D grid of characters (board) and a word (word), determine if the word can be formed by walking adjacent cells (up/down/left/right).

Constraints:

Example:

board = [
  ['B', 'C', 'F', 'E'],
  ['E', 'A', 'B', 'L'],
  ['B', 'C', 'D', 'O'],
  ['E', 'B', 'M', 'O'],
  ['R', 'G', 'D', 'E'],
]

word = "BLOOMBERG" -> true
word = "BOB"       -> false
word = "BEABLE"    -> true

Approach

Classic DFS + backtracking:

Python

def exist(board: list[list[str]], word: str) -> bool:
    if not board or not board[0]:
        return False

    R, C = len(board), len(board[0])

    def dfs(r: int, c: int, i: int) -> bool:
        if i == len(word):
            return True
        if r < 0 or r >= R or c < 0 or c >= C:
            return False
        if board[r][c] != word[i]:
            return False

        ch = board[r][c]
        board[r][c] = '#'

        found = (
            dfs(r + 1, c, i + 1) or
            dfs(r - 1, c, i + 1) or
            dfs(r, c + 1, i + 1) or
            dfs(r, c - 1, i + 1)
        )

        board[r][c] = ch
        return found

    for r in range(R):
        for c in range(C):
            if board[r][c] == word[0] and dfs(r, c, 0):
                return True

    return False

Complexity


Need interview help? Contact OA VO Service

Need real interview questions? Contact WeChat: Coding0201 to get the questions.