您的位置:首页 > 编程语言

字符串移位包含问题(编程之美_3.1)

2014-04-24 09:07 260 查看
题目:给定两个字符串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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: