我们在另一个字符串中搜索字符串时可以跳过索引吗?

时间:2014-01-05 15:15:02

标签: string search

考虑在字符串中搜索另一个字符串的完全匹配。在部分匹配停止匹配的位置继续搜索是否安全,而不会得到错误的结果?

在代码中:

int indexOf(string target, string search){
    for(int i=0; i + search.length < target.length; i++){
        int f=0;
        for(; f < search.length && search[f] == target[i + f]; f++); //empty loop
        if(f == search.length) return i;

        i += f;  //is it safe to do this without to worry about a missing match? 
    }
}

要担心的是错过在部分匹配中开始的完全匹配(在上面的代码中i和i + f之间的某处)。但事实上,我无法想出任何一个案例来证明这种担忧。你能吗?

2 个答案:

答案 0 :(得分:1)

有各种字符串搜索算法here

我认为这就是你想要的KMP

答案 1 :(得分:0)

是的,您需要担心它,并且需要担心它的原因的一个示例是在字符串“anananas”中搜索子字符串“ananas”。