65,211
社区成员
发帖
与我相关
我的任务
分享
int index(char *S, char *T, int pos){//返回子串T在母串S中第pos后的位置,如不存在则返回0
int i = pos; // 1 <=pos <=length(S)
int j = 1; //需匹配的字符串T中的计数
while ( i <= S[0] && j <= T[0]){ //不复杂,当主串S中以及子串T没有全部遍历完时则继续进行循环S[0]的值存放的是主串S的长度,T[0]存放的也是子串T的长度
if ( S[i] == T[j]){ //字符相匹配,i,j前进
++i;
++j;
}
else{ //否则j指针后退重新匹配
i = i-j+2;
j = 1;
}
if (j >= T[0]) //当匹配成功
return i-T[0]; //返回查找到的位置
else
return 0; //若没有成功,则返回0
}