S串为主串,T为待匹配串,用i、j分别指示S和T中的字符位置,i、j初值均为0。
算法步骤:(1)若当前比较的字符是s【i】==T【j】,则继续向后比较,执行(i++,j++);
(2)若当前正在比较的字符不匹配呢?那么j回溯到位置0(即令j=0),i呢?回溯到主串的i-j+1处
0 1 2 3 4 5 6 7
a b a b c a b d i=2
a b d j=2
a b d j=2;i=7(匹配完成) j=3;i=8
(3)如何判定什么时候能继续比较,什么时候匹配完成呢?
显然,匹配操作要求S串和T串都没到串尾,用语句(i
#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
int