德国莱茵官网:下面的算法中,“i=i-j+1"是怎么来的?

来源:百度文库 编辑:神马品牌网 时间:2024/05/08 11:27:55
int Index(SString S, SString T, int pos) {

// 返回子串T在主串S中第pos个字符之后的位置。

// 若不存在,则函数值为0。

// 其中,T非空,1≤pos≤StrLength(S)。

i = pos; j = 1;

while (i <= S[0] && j <= T[0]) {

if (S[i] == T[j]) { ++i; ++j; } // 继续比较后继字符

else { i = i-j+2; j = 1; } // 指针后退重新开始匹配

}

if (j > T[0]) return i-T[0];

else return 0;

} // Index
不好意思,是"i=i-j+2"

先问个问题
i、j是int型,s[0]和t[0]是字符,两者虽然可以比较但在这里比较有什么意义吗?
指针后退是 以本次比较的首字符的位置后移一个字符为下次比较的首字符的位置,应该是程序中写的 i = i-j+2吧。

这个程序有问题,你还是再好好想想吧!
这么垃圾的程序都能编出来!!