我的js算法爬坑之旅-实现 strStr()

163 阅读1分钟

第八天:力扣第28题,实现 strStr()

地址:leetcode-cn.com/problems/im…

思路:先考虑下当needle为空的时候,应该返回的是0,所以直接拉出来,然后就是转化成数组for循环判断了。

var strStr = function(haystack, needle) {
    let a = haystack.split("");//转化成数组
    let c = [];
    if(needle=="")//空导出0
    {
        return 0;
    }
    for(let i = 0;i < haystack.length-needle.length+1;i++)//大小这里是相减
    {
        for(let j = 0;j<needle.length;j++)//循环加入数组
        {
            c[j]=a[j+i];
        }
        if(c.join("")==needle)//进行比较
        {
            return i;
        }
    }
    return "-1";
};

不难,其实有个函数可以直接实现的:

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

我看了看,大部分方法差不多,其实也有个截取字符串的方法可以用的:

var strStr = function (haystack, needle) {
    if (needle === "") return 0
    for (var i = 0; i < haystack.length; i++) {
        if (haystack[i] === needle[0]) {
            if (haystack.substring(i, i + needle.length) === needle) return i;
        }
    }
    return -1
};  

substring是截取字符串的。同样其实slice方法也行,还有substr。

这里说下substring,slice和substr的区别了:

百度吧,下次写,嘻嘻