学习linux
分类: C/C++
2014-03-29 23:42:07
在《编程之美》上看到的一道题,3.1节。
解法一有点问题,下面是书上写的:
char src[] = "AABBCD";
char des[] = "CDAA";
int len = strlen(src);
for(int i=0;i
{
char tmp = src[0];
for(int j=0;j
{
src[j] = src[j+1];
}
src[len-1] = tmp;
if(strstr(src,des) == 0)
{
return true;
}
}
return false;
错误一:应该是if(strstr(src,des) != 0)
错误二:应该在比较后再循环移位,比如“ABCD”和“ABC”则在移动到“DABC”才会找到
解法二更加好一些,这也告诉我们有时候要转换一下问题
int main(int argc,char **argv)
{
int len;
char *src;
char *des;
if(argc != 3) {
printf("para must be 3 \n");
return -1;
}
len = strlen(argv[1]);
src = malloc(2*sizeof(argv[1]));
memcpy(src,argv[1],len);
src = strcat(src,argv[1]);
des = argv[2];
len = strlen(src);
printf("string is %s and %s and %d\n",src,des,len);
if(strstr(src,des) != 0) {
printf("find it %s and %s\n",src,des);
return 0;
}
printf("can't find it\n");
return -1;
}