美文网首页
javascript-字节跳动,腾讯大厂面试题——力扣(28)实

javascript-字节跳动,腾讯大厂面试题——力扣(28)实

作者: 纯粹的少年 | 来源:发表于2020-09-14 11:03 被阅读0次

    题目

    给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
    示例
    输入: haystack = "hello", needle = "ll"
    输出: 2
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/implement-strstr

    解题思路

    • 首先我们看到题目的时候,就会直接想到使用indexOf(),来返回检索的下标。但是我们使用这种方式有点投机取巧。我们应该用最底层的方法来实现。
    • 第二种,底层实现
      • 首先先判断传入的第二个字符是否为空,就返回0.
      • 之后我们循环遍历给定的字符串,将当前字符和检索字符的第一项对比,如果相同。我们就创建一个index=0来记录,比对成功的次数。
      • 比对成功后,我们就循环遍历要查找的字符串。让当前字符和之前字符串的字符对比。比对不成功就直接跳出,如果比对成功,index++。
      • 之后我们遍历完要查找的字符串,比对一下index和要检索的字符串的长度是否相等,如果相等。我们就直接返回外部循环的i。
      • 最后我们所有对比不成功,就返回-1

    代码

    • 话不多说,直接上代码。
    // 取巧的方法
    function strStr(haystack, needle){
        return haystack.indexOf(needle);
    };
    
    • 原始的方法
    function strStr(haystack, needle){
        if(needle === "") return 0;
        for(var i = 0 ; i < haystack.length ; i++){
            if(haystack[i] === needle[0]){
                var index =0;
                for(var j = 0 ; j <needle.length ; j++){
                    if(haystack[i+j] !== needle[j]) break;
                    index++;
                }
                if(index === needle.length ) return i
            }
        }
        return -1;
    }
    

    相关文章

      网友评论

          本文标题:javascript-字节跳动,腾讯大厂面试题——力扣(28)实

          本文链接:https://www.haomeiwen.com/subject/vdpaektx.html