博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

字符串移位包含的问题(编程之美3.1)

Posted on 2010-09-20 22:32  KurtWang  阅读(359)  评论(0编辑  收藏  举报
//空间换时间
bool func(char * s1, char * s2)
{
	assert(s1);
	assert(s2);
	char * temp = new char[strlen(s1)*2 + 1];
	strcpy(temp,s1);
	strcat(temp,s1);
	if(strstr(temp, s2) != NULL)
		return true;
	else
		return false;
	delete[] temp;
}

//循环判断
bool func2(char * s1, char * s2)
{
	assert(s1);
	assert(s2);
	size_t len = strlen(s1);
	for(int i=0;i<len;i++)
	{
		char temp = s1[0];
		for(int j=0;j<len-1;j++)
			s1[j] = s1[j+1];
		s1[len-1]=temp;
		if(strstr(s1,s2) != NULL)
			return true;
	}
	return false;
}

int _tmain(int argc, _TCHAR* argv[])
{
	char s1[] = "ABCD";
	//不能用char * s1 = "ABCD",因为这样的话是申请一个常量字符串,不允许被修改
	char s2[] = "BCDA";
	if(func(s1,s2))
		printf("true");
	else
		printf("false");

	if(func2(s1,s2))
		printf("true");
	else
		printf("false");
}