题目:
查找主串中是否还有子串,如果有则返回匹配的第一个位置,否则返回-1
#include <stdio.h>
#include <string.h>
int Index(char *origine, char *target)
{
if (origine ==NULL||target == NULL) //先检查是否为空
{
printf("there is a false\n");
return -1;
}
int origStrLen = strlen(origine);
int targetLen = strlen(target);
int pos = -1;
int prePos = pos;
int i = 0;
int j = 0;
while(i < origStrLen && j < targetLen) // i,j都从0开始,故是<而不是<=
{
if (origine[i] == target[j])
{
++i;
++j;
}
else
{
i = i - j + 1; //i退回到上次匹配首位的下一位
j = 0; //每次从头开始从新查找子串
}
}
if (j == targetLen) //判断j是否等于targetLen,如果是则可以获取位置
{
prePos = pos;
pos = i - j; //获取第一个匹配的位置
}
return pos+1; //因为数组从0开始,所以要加1
}
int main()
{
if(Index("hello aaaaa", "aa")) //注意这里的调