抹布女孩720p:int Index(SString S, SString T, int pos) {

来源:百度文库 编辑:高考问答 时间:2024/05/05 20:38:53
这是数据结构的字符串模式匹配算法,里面的“i=i-j+1"是怎么来的?

是很简单的一个数学等式~
如果S=akdgadfed T=dg 那么先从S和T第一个字母开始比较,但由于a!=d,所以就要用S中的k和T中的d再比较,而此时i=1,j=1;而i=i-j+2=2,j=1;所以这么写

第一次比较完后i = pos+1
第二次比较完后i = pos+2
……
if (S[i] == T[j]) { ++i; ++j;} //假设相同字符长n,i=pos+n,j=1+n;
else{ i = i-j+2; j =1;} //不相同时 i = i-j+2 = (pos+n)-(1+n)+2 = pos+1;
我也是看到别人的,但是我觉的这个更合理。