方法一 js函数slice()
将字符串按空格符分割为单词数组,记searchWord的长度为n,分割每个单词的前n位看是否和searchWord匹配
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官方题解
链接:1455.检查单词是否为句中其他单词的前缀
使用 start 记录单词的起始,end记录单词结尾的下一个位置。我们遍历字符串 sentence并不断地分割单词,对于区间[start,end) 对应的单词,判断它是否存在某一前缀等于 searchWord,如果存在直接返回该单词对应的下标 index;如果遍历完所有单词都不符合条件,返回 −1。
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;
};
消耗时间和内存情况: