JS代码题6

2019-11-18  本文已影响0人  twentyshaw

字符串查找

请使用最基本的遍历来实现判断字符串 a 是否被包含在字符串 b 中,并返回第一次出现的位置(找不到返回 -1)。

a='34';b='1234567'; // 返回 2
a='35';b='1234567'; // 返回 -1
a='355';b='12354355'; // 返回 5
isContain(a,b);

题目要求实现的功能其实就是String的indexOf()方法,所以:

function isContain(strA,strB){
    return strB.indexOf(strA)
}

但是题目要求“最基本的遍历来实现”,所以不能使用indexOf()方法。用遍历来实现的话:

function isContain(strA,strB){
    var arrA = strA.split('')
    var arrB = strB.split('')
    var flag,temp
    for(var j in arrB){
        if (arrA[0] === arrB[j]) {
            temp = parseInt(j) //注意这里的j是一个字符串。。它居然是个字符串
            flag = true
        }
    }
    var index = temp + 1
    for (var i = 1; i < arrA.length; i++){
        if (arrA[i] !== arrB[index++]) {
            flag = false
        }
    }
    if (flag) {
        return temp
    }else{
        return -1
    }
}

自己在写这个代码的过程中犯了一个错误:

function isContain(strA,strB){
    var arrA = strA.split('')
    var arrB = strB.split('')
    var flag,temp
    for (var k = 0; k < arrB.length; k++) {
        if (arrB[k] === arrA[0]) {
            temp = j
            flag = true
        }
    }
    var index = temp + 1
    for (var i = 1; i < arrA.length; i++){
        if (arrA[i] !== arrB[index++]) {
            flag = false
        }
    }
    if (flag) {
        return temp
    }else{
        return -1
    }
}

然后还有几个要注意的点:

上一篇 下一篇

猜你喜欢

热点阅读