1455. Check If a Word Occurs As a Prefix of Any Word in a Sentence #
题目 #
- 给定字符串
sentence
并指定检索词为searchWord
,句子由 空格 分隔的单词组成。 - 检查检索词
searchWord
是否为句子sentence
中任意单词的前缀。- 如果
searchWord
是某一个单词的前缀,则返回句子sentence
中该单词所对应的下标(下标从 1 开始)。 - 如果
searchWord
是多个单词的前缀,则返回匹配的第一个单词的下标(最小下标)。 - 如果
searchWord
不是任何单词的前缀,则返回-1
。
- 如果
- 字符串
s
的 前缀 是s
的任何前导连续子字符串。
思路 #
双指针 #
代码 #
双指针 #
class Solution {
public int isPrefixOfWord(String sentence, String searchWord) {
int ptr1 = 0, ans = 0;
while (ptr1 < sentence.length()) {
int ptr2 = ptr1;
ans += 1;
/** 检查当前词的匹配状态 */
while (ptr2 < ptr1 + searchWord.length() && sentence.charAt(ptr2) == searchWord.charAt(ptr2 - ptr1)) ptr2 += 1;
if (ptr2 == ptr1 + searchWord.length()) return ans;
/** 若失配,检查下一个词的匹配状态 */
else {
ptr1 = ptr2;
while (ptr1 < sentence.length() && sentence.charAt(ptr1) != ' ') ptr1 += 1;
ptr1 += 1;
}
}
return -1;
}
}