给定两个字符串S1和S2,要求判断S2能否被S1做循环移位得到的字符串包含。例如:s1=AABCD和S2=CDAA,返回true, s1=ABCD和s2=ACBD,返回false。
int strcontain(const char* const str1, const char* const str2){
if(NULL == str1 || NULL == str2)
return 0;
int len1, len2, i;
char* tmp = NULL;
len1 = strlen(str1);
len2 = strlen(str2);
if(len2 > len1)
return 0;
tmp = (char*)malloc(len1 * 2);
memset(tmp, 0, len1*2);
strcpy(tmp, str1);
for(i = 0; i < len1; i++){
if(strncmp(tmp + i, str2, len2) == 0){
free(tmp);
tmp = NULL;
return 1;
}
tmp[len1 + i] = str1[i];
}
free(tmp);
tmp = NULL;
return 0;
}