串的模式匹配经常需要用到,判断一个字符串是否是另外一个字符串的一部分。前者称为子串或模式,后者成为主串或正文串。
先用最简单的BF算法实现串的模式匹配。
算法思路:先从主串和子串第一个位置开始进行比较。如果相等,那么继续比较后面的字符,否则从主串失配的下一个元素开始和子串的第一个元素继续匹配。直到比较到主串最后位置,如果一直不匹配,则匹配失败,否则得到匹配的位置。
最好情况时间复杂度:O(n+m)
(假设每次不成功的匹配都发生在子串的第一个字符)
最坏情况时间复杂度:O(n*m)
(假设每次不成功的匹配都发生在子串的最后一个字符)
算法优点:思路简单明了。
算法缺点:时间复杂度高。
#include <iostream>
using namespace std;
#include<stdio.h>
#include<string.h>
//字符串采用数组存储.
typedef struct
{