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

消耗时间和内存情况:

相关推荐
wuxia211833 分钟前
微信小程序单击元素切换元素的显示和隐藏
javascript·微信小程序·setdata
一起学开源1 小时前
一文读懂 ReAct 范式:让 AI Agent 真正学会“思考+行动“
java·javascript·react.js·ecmascript·react·alibaba·智能体开发
云泽8082 小时前
C++ 可调用对象通关指南:深度解析 Lambda 表达式、function 包装器与 bind 绑定器
开发语言·c++·算法
wlsh152 小时前
Go 迭代器
算法
语戚3 小时前
力扣 3161. 块放置查询:线段树解法(Java 实现)
java·算法·leetcode·面试·线段树·力扣·
游九尘3 小时前
JavaScript 实现三段式版本号对比函数(app升级用)
javascript·uni-app
zhiSiBuYu05173 小时前
Claude-Code 新手极速上手指南
javascript·node.js
CS创新实验室3 小时前
从顺序表到动态数组:数据结构的永恒基石与现代语言的优雅封装
数据结构·算法
罗超驿4 小时前
18.Web API 实战:元素与表单属性的获取和修改
开发语言·前端·javascript
Black蜡笔小新4 小时前
自动化AI算法训练服务器DLTM训推一体化平台助力农业生产管理实现安全智能化
人工智能·算法·自动化