找出字符串中第一个匹配项的下标
js
/** 方案一 直接indexOf返回...emm...
*/
var strStr = function(haystack, needle) {
return haystack.indexOf(needle)
}
js
/** 方案二
* 时间复杂度:O(nm),其中 n 和 m 分别是 haystack 和 needle 的长度。
* 在最坏情况下,需要比较 haystack 字符串中的每个子串和 needle 字符串是否相等
*/
var strStr = function(haystack = '', needle = '') {
let needleLen = needle.length
if(needleLen === 0) return 0
// i < 可以优化成 i < needleLen.length - needleLen + 1
// 【如果剩余循环的次数少于needleLen + 1次了,说明没必要循环下去了】
for (let i = 0; i < needleLen.length; i++) {
// 比较haystack字符串中以i为开始下标的子串是否与needle字符串相等,如果相等返回下标即可
if(haystack.substring(i, i + needleLen) === needle) {
return i
}
}
return -1
}