cpp
#include <stdio.h>
int mystrlen(char *str)
{
int length = 0;
while(*str != '\0')
{
str++;
length++;
}
return length;
}
int array (char *str01,char *str02)
{
int length1 = mystrlen(str01);
int length2 = mystrlen(str02);
int x = 0;
for (int i = 0; i < length1-length2+1; i++)
{
for (int j = 0; j < length2; j++)
{
if(str01[i+j] == str02[j])
{
x++;
if(x == length2)
{
printf("%s包含%s\n",str01,str02);
return ;
}
}
else{
x = 0;
}
}
}
printf("%s不包含%s\n",str01,str02) ;
}
int main(int argc, char const *argv[])
{
char *str01 = "helloworld";
char *str02 = "hello";
int length1 = mystrlen(str01);
printf("length1 = %d\n",length1);
int length2 = mystrlen(str02);
printf("length2 = %d\n",length2);
array(str01,str02);
return 0;
}
提示:
唯一难点
外层循环范围等于大数组的长度减去小数组的长度+1,含义是:首先是大数组长度减去小数组长度是为了和小数组长度是为了保证每次大数组和小数组比较的长度一致,如果长度不一致,肯定就不同,就不是大数组中包含的内容了,(如果不减length2的话,那比到大数组的后一位,就不够小数组的长度,二者就比不了),+1是为了可以取到下一位。