LeetCode 题解工作台
检查单词是否为句中其他单词的前缀
给你一个字符串 sentence 作为句子并指定检索词为 searchWord ,其中句子由若干用 单个空格 分隔的单词组成。请你检查检索词 searchWord 是否为句子 sentence 中任意单词的前缀。 如果 searchWord 是某一个单词的前缀,则返回句子 sentence 中该单词…
3
题型
7
代码语言
3
相关题
当前训练重点
简单 · 双·指针·invariant
答案摘要
我们将 按空格分割为 ,然后遍历 ,检查 是否是 的前缀,是则返回 。若遍历结束,所有单词都不满足,返回 。 时间复杂度 $O(m \times n)$,空间复杂度 。其中 和 分别是 和 的长度。
Interview AiBoxInterview AiBox 实时 AI 助手,陪你讲清 双·指针·invariant 题型思路
题目描述
给你一个字符串 sentence 作为句子并指定检索词为 searchWord ,其中句子由若干用 单个空格 分隔的单词组成。请你检查检索词 searchWord 是否为句子 sentence 中任意单词的前缀。
如果 searchWord 是某一个单词的前缀,则返回句子 sentence 中该单词所对应的下标(下标从 1 开始)。如果 searchWord 是多个单词的前缀,则返回匹配的第一个单词的下标(最小下标)。如果 searchWord 不是任何单词的前缀,则返回 -1 。
字符串 s 的 前缀 是 s 的任何前导连续子字符串。
示例 1:
输入:sentence = "i love eating burger", searchWord = "burg" 输出:4 解释:"burg" 是 "burger" 的前缀,而 "burger" 是句子中第 4 个单词。
示例 2:
输入:sentence = "this problem is an easy problem", searchWord = "pro" 输出:2 解释:"pro" 是 "problem" 的前缀,而 "problem" 是句子中第 2 个也是第 6 个单词,但是应该返回最小下标 2 。
示例 3:
输入:sentence = "i am tired", searchWord = "you" 输出:-1 解释:"you" 不是句子中任何单词的前缀。
提示:
1 <= sentence.length <= 1001 <= searchWord.length <= 10sentence由小写英文字母和空格组成。searchWord由小写英文字母组成。
解题思路
方法一:字符串分割
我们将 按空格分割为 ,然后遍历 ,检查 是否是 的前缀,是则返回 。若遍历结束,所有单词都不满足,返回 。
时间复杂度 ,空间复杂度 。其中 和 分别是 和 的长度。
class Solution:
def isPrefixOfWord(self, sentence: str, searchWord: str) -> int:
for i, s in enumerate(sentence.split(), 1):
if s.startswith(searchWord):
return i
return -1
复杂度分析
| 指标 | 值 |
|---|---|
| 时间 | complexity is O(n + m) where n is the sentence length and m is the searchWord length, since each character is visited once in two-pointer scanning. Space complexity is O(n) for storing words or temporary slices during scanning, ensuring linear memory usage. |
| 空间 | O(n) |
面试官常问的追问
外企场景- question_mark
Candidate attempts direct string splitting instead of incremental scanning.
- question_mark
Candidate compares full words instead of only prefix length.
- question_mark
Candidate misses 1-based indexing requirement for the returned word.
常见陷阱
外企场景- error
Checking all characters of each word instead of only the prefix length.
- error
Returning index of last matching word instead of first minimal index.
- error
Ignoring edge cases where searchWord does not match any word, causing incorrect defaults.
进阶变体
外企场景- arrow_right_alt
Return all indices of words where searchWord is a prefix, instead of first match.
- arrow_right_alt
Allow uppercase letters and ignore case during prefix comparison.
- arrow_right_alt
Find the longest matching prefix instead of the first word match.