方法一 js函数slice()
将字符串按空格符分割为单词数组,记searchWord的长度为n,分割每个单词的前n位看是否和searchWord匹配
javascript
var isPrefixOfWord = function(sentence, searchWord) {
let res = sentence.split(" ")
for(i = 0 ; i < res.length ; i++) {
if (res[i].slice(0,searchWord.length) === searchWord) {
return i + 1
}
}
return -1
}
消耗时间和内存情况:
方法二 双指针:
来自leetcode官方题解
使用 start 记录单词的起始,end记录单词结尾的下一个位置。我们遍历字符串 sentence并不断地分割单词,对于区间[start,end) 对应的单词,判断它是否存在某一前缀等于 searchWord,如果存在直接返回该单词对应的下标 index;如果遍历完所有单词都不符合条件,返回 −1。
javascript
var isPrefixOfWord = function(sentence, searchWord) {
let n = sentence.length, index = 1, start = 0, end = 0;
while (start < n) {
while (end < n && sentence[end] !== ' ') {
end++;
}
if (isPrefix(sentence, start, end, searchWord)) {
return index;
}
index++;
end++;
start = end;
}
return -1;
}
const isPrefix = (sentence, start, end, searchWord) => {
for (let i = 0; i < searchWord.length; i++) {
if (start + i >= end || sentence[start + i] !== searchWord[i]) {
return false;
}
}
return true;
};
消耗时间和内存情况: