likes
comments
collection
share

一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法

作者站长头像
站长
· 阅读数 49

有人相爱,有人夜里开车看海,我是leetcode第一题都做不出来

这是LeetCode的第28题:实现 strStr() 属于简单类型

实现 strStr()

实现 strStr() 函数。

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回  -1 。

示例 1:

输入:haystack = "hello", needle = "ll"

输出:2

示例 2:

输入:haystack = "aaaaa", needle = "bba"

输出:-1  

解题思路

一行代码就能解出这道题,既然是返回出现的第一个位置,完全可以使用indexOf

 var strStr = function(haystack, needle) { 
     return haystack.indexOf(needle) 
 };

一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法

一行代码省时省力

一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法

但是这样好像不太好吧,不用indexOf再搞一次

可以先遍历一遍字符串,找到与目标字符串第一个字符相同的位置,然后在判断后面的是否相同

具体步骤如下:

  • 第一步:定义一个变量res,用于存储第一个字符的位置,初始值为-1

  • 第二步:如果needle.length>haystack.length,直接就可以返回-1了

  • 第三部遍历 haystack ,判断一下haystack[i]===needle[0]是否成立,如果成立,就利用substr截取字符串,再与needle判断是否相同,如果相同则跳出循环直接就返回i

var strStr = function(haystack, needle) { 
    let res= -1 
    if(needle.length>haystack.length) return res 
        for(let i=0;i<haystack.length;i++){ 
            if(haystack[i]===needle[0]){ 
                if(haystack.substr(i,needle.length) === needle){ 
                    res = i 
                    break 
                } 
            } 
        } 
    return res 
};

一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法

当然,还有另一种写法,连substr都不用,这里我直接贴出图片吧

一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法

知识点

  • substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。
转载自:https://juejin.cn/post/7133973002672799751
评论
请登录