leetcode-javascript-28. 实现 strSt
2019-10-05 本文已影响0人
一书文集
strStr() 找出开始位置,返回下标值,否则返回-1
再js里面,用indexOf。
分析 + 思路
要进行子字符串与木字符串的对比
我们可以直接使用for + substring 送分题
var strStr = function(haystack, needle) {
return haystack.indexOf(needle)
};
我的解法
使用slice 从i到needle长度的,转回字符串与needle对比
var strStr = function(haystack, needle) {
//每次取两个元needle个元素,i+= needle.length,直到有位置否则返回-1
if(haystack == "" && needle=="") return ""
for(let i=0; i<haystack.length;i++){
let arr = haystack.split("")
let arr2 = arr
//数组无法直接判断,转化成字符串
//转化成数组的目的是为了使用slice
if((arr2.slice(i, needle.length+i)).join("") == needle) {
//i , needle.length+1可以完成固定长度的切割
return i;
}
}
return -1
};
用开关
var strStr = function(haystack, needle){
if (needle==="") return 0
for(var i=0;i<haystack.length;i++){
if(haystack[i]===needle[0]){ //从第一个元素 与needle的第一个元素比较,
var flag = true;
//第二个for循环只便利needle.length, 每次只会有needle长度的判断, 利用数组进行判断
//不需要切割
for (var j=1;j<needle.length;j++){
if (haystack[i+j]!=needle[j]){ //数组只能够单个进行判断
flag = false
break;
}
}
if (flag) return i
//
}
}
return -1
};
substr, 速度和indexof类似
var strStr = function (haystack, needle) {
if (needle === "") return 0
for (var i = 0; i < haystack.length; i++) {
if (haystack[i] === needle[0]) { //haystack.charAt(i)
if (haystack.substring(i, i + needle.length) === needle) return i;
}
}
return -1
};
| 1 分钟前 | 通过 | 28 ms | 14 MB | Python3 |
| 2 分钟前 | 通过 | 1 ms | 37 MB | Java |
| 4 分钟前 | 通过 | 4 ms | 9.2 MB | Cpp |
| 5 分钟前 | 通过 | 64 ms | 35.8 MB | Javascript |
| 10 分钟前 | 通过 | 56 ms | 35.9 MB | Javascript |
| 20 分钟前 | 通过 | 3760 ms | 35.6 MB | Javascript |
| 14 小时前 | 通过 | 56 ms | 33.6 MB | Javascript |