每日一题——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;
};

消耗时间和内存情况:

相关推荐
YuanDaima204829 分钟前
双指针基础原理与题目说明
数据结构·人工智能·python·算法·leetcode·手撕代码
ouzz29 分钟前
使用 react-canvas 制作一个 Figma 工具:从画布到编辑器
前端·javascript
别或许30 分钟前
5、高数----一元函数微分学的应用(一)几何应用
算法
颜酱33 分钟前
语音合成与视觉模型api接入实现
前端·javascript·人工智能
wayz1139 分钟前
Day 5:KNN算法与相似K线匹配
人工智能·算法·机器学习
晨曦中的暮雨1 小时前
Java集合类型主要有哪些?以及各自原理
数据结构·算法
lixinnnn.1 小时前
01BFS:Three States
算法
晓纪同学1 小时前
EffctiveC++_第三章_资源管理
开发语言·c++·算法
阿珊和她的猫1 小时前
使用 TypeScript 实现数组类型判断方法
javascript·typescript·状态模式
XTTX1102 小时前
Vue3+Cesium电子围栏效果
前端·javascript·vue.js