← 返回博客列表
Bloomberg

Bloomberg 面試題:根據字典將無空格字串切分成句子

2025-12-12

題目描述

給定:

請回傳一個插入空格後的字串,使每段都在字典中。

範例

字串: "bloombergisfun"
字典: ["bloom", "bloomberg", "is", "fun"]
輸出: "bloomberg is fun"

解題思路

這是典型 Word Break 問題。穩健解法是:

Python(DP + 重建)

def word_break_one(s: str, word_dict: list[str]) -> str:
    word_set = set(word_dict)
    n = len(s)

    dp = [False] * (n + 1)
    parent = [-1] * (n + 1)
    dp[0] = True

    for i in range(1, n + 1):
        for j in range(i):
            if dp[j] and s[j:i] in word_set:
                dp[i] = True
                parent[i] = j
                break

    if not dp[n]:
        return ""

    parts = []
    i = n
    while i > 0:
        j = parent[i]
        parts.append(s[j:i])
        i = j

    return " ".join(reversed(parts))

複雜度


需要面試輔助服務?聯絡 OA VO Service

需要面試真題? 立刻聯繫微信 Coding0201,獲得真題