问题:给定两个字符串s1,s2,要求判定s2是否能够被s1做循环移位得到。
算法:
// 判断是否能够从s1循环移位得到s2
bool StringAlgorithm::stringRotate(const char *s1,const char *s2){
int len = strlen(s1);
char *p = new char(2*len + 1);
p[2*len] = '\0';
memcpy(p, s1, len);
memcpy(p+len, s1, len);
//cout << p << s2 << endl;
char *result = strstr(p, s2);
delete[] p;
if(result == NULL){
return false;
}else{
return true;
}
}
笔记:《编程之美》 P215