28. Implement strStr()

Implement strStr().

Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.

这道题就是在找一个字符串包不包含另一个字符串,现成的方法很多,如果直接使用会很容易解决问题,不过要是自己实现呢:

/**
 * @param {string} haystack
 * @param {string} needle
 * @return {number}
 */
var strStr = function(haystack, needle) {
    if (needle==="")
        return 0;
    if (haystack==="")
        return -1;
    var num1 = haystack.length;
    var num2 = needle.length;
    if (num2>num1)
        return -1;
    if (num1===num2&&haystack==needle)
        return 0;
    var p1 = 0;
    var p2 = 0;
    var p3 = 0;
    while(p2<num1) {
        if (haystack[p2]===needle[p1]) {
            if (p1===0)
                p3=p2;
            if (p1===(num2-1))
                return p2+1-num2;
            else {
                p1++;
                p2++;
            }
        } else {
            if (p1===0) {
                if ((num1-p2)<num2) 
                    return -1;
                 p2++;
            }
            else {
                p2=p3+1;
                p1=0;
            }
        }
    }
    return -1;
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容