BF算法

设s和t是两个字符串,若t是s的子串,则返回t在s中的位置,否则返回0

int Index_BF(char s[],char t[])
{
     //字符串s和t的第一个元素都设位置为0,与下标保持一致
     int i=0,j=0;
     //求字符串s和t的长度
     int s_length=strlen(s);
     int t_length=strlen(t);
     //主串最多比较i次,每次匹配不成功后再次循环时子串最多比较j次
     while(i<s_length&&j<t_length) //直接改成while(s[i]!='\0'&&t[j]!='\0'){}更简洁
     {
          if(s[i]==t[j])
          {
               i++;
               j++;
          }
          else
          {
              i=i-j+1; //每次比较不成功时,因为比较了j次,故i都要回退j步并再进1步
              j=0;
          }
     }
    //比较结束过后就要判断是否匹配成功
     //匹配成功时,由于子串长度为t_length,故一定是比较了t_length次
     if(j==t_length)
     {
          //比较成功时,由于比较了j次,故i要回退j步
           return i-t_length;  //或return i-j;
     }
     return -1;
}