给定两个字符串s1和s2,要求判断s2是否能够通被通过s1做循环移位(rotate)得到的字符串包含。例如,给定s1=AABCD 和 s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false. #include <stdio.h> #include <string.h> //解法一 bool CheckContain(char *source, char *dest) { int len1 = 0, len2 = 0; len1 = strlen(source); len2 = strlen(dest); if(len1 < len2) return false; bool contained = true; for(int i = 0; i < len1; i++) { if(source[i] == dest[0]) { for(int j = 1; j < len2; j++) { if(source[(i + j) % len1] != dest[j]) { contained = false; break; } } } } return contained; } //解法二 bool CheckContain(const char *source, const char *dest) { int len = strlen(source); char *tempStr = new char[2*len]; strcpy(tempStr, source); strcat(tempStr, source); if(strstr(tempStr, dest) != NULL) { return true; } return false; } void main() { char source[] = "AABCD"; char dest[] = "ABCD"; if(CheckContain(source,dest)) { printf("Contain/n"); } else { printf("Not Contain/n"); } }