背景 来看一道leetcode题目: Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. 让我们找到第一个子串的位置,这就是典型的字符串匹配问题.首先想到的就是暴力求解,时间复杂度O(mn). BF算法实现 class Solution { public: int strStr(string hay
kmp算法是改进后的字符匹配算法,它与bf算法的区别是,每次从串与主串匹配失败后,从串与主串匹配的位置不同. 下面具体说下这两种算法的区别: 主串:BABCDABABCDABCED 从串:ABCDABCED BF算法: 第一步: B A B C D A B A B C D A B C E D A 从主串的第一个字符位置开始与从串第一个字符位置进行匹配,匹配失败 第二步: B A B C D A B A B C D A B C E D