方法一 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;
};
消耗时间和内存情况:文章来源:https://www.toymoban.com/news/detail-827028.html
文章来源地址https://www.toymoban.com/news/detail-827028.html
到了这里,关于每日一题——LeetCode1455.检查单词是否为句中其他单词的前缀的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!