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;
};