每日一题——LeetCode1455.检查单词是否为句中其他单词的前缀

方法一 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官方题解

链接:1455.检查单词是否为句中其他单词的前缀

使用 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;
};

消耗时间和内存情况:

相关推荐
薛定谔的猫-菜鸟程序员6 分钟前
Electron开发超详细教程(从入门到放弃)
前端·javascript·electron
牧羊人.33336 分钟前
卷积神经网络之VGG
人工智能·深度学习·神经网络·算法·cnn
小郎君6581 小时前
Vue 多标签页的加载态设计:为什么我没有用 Suspense 实现 PageLoading
vue.js·算法
htzyl2061 小时前
前端阶梯——第四十三章、实战二:待办清单To-Do
前端·javascript·html
程序员大阳1 小时前
HTML+CSS+JS对话式实战(1)-开篇:认识我们要做的社团活动发布平台
javascript·css·html·实战·系统·平台·社团活动发布
JJJennie7772 小时前
MAI Gateway私有化部署全攻略:大模型网关如何接入?附架构图
算法·gateway·ai网关·魔芋ai
速易达网络2 小时前
Three.js 动画入门教学:从场景搭建到流畅动效
开发语言·javascript·ecmascript
東隅已逝,桑榆非晚2 小时前
算法3.双指针法-快乐数
c++·笔记·学习·算法
专注仿真2 小时前
卷积神经网络(CNN)算法详解
人工智能·python·算法·代码·大模型训练