题目:给定两个字符串s1和s2,要求判定s2是否能够被s1做循环移位得到的字符串包含。例如:给定s1=AABCD和s2=CDAA,返回true;给定
s1=ABCD和s2=ABCD,返回false。
1.思路:将字符串s1循环左移且每次移动一位,得到一个新的字符串,然后比较s2是否被s1所包含,包含则返回true。比较过程中用到了strstr(char*, char*)函数
bool isContains(char* pSource, char* pStr) {
if (NULL == pSource || NULL == pStr) {
return false;
}
//每次循环左移1位
int length = strlen(pSource);
for (int i = 0; i < length; ++i) {
char temp = pSource[0];
for (int j = 0; j < length - 1; ++j) {
pSource[j] = pSource[j + 1];
}
pSource[length - 1] = temp;
//如果包含的返回true
if (0 == strstr(pSource, pStr)) {
return true;
}
}
return false;
}