判断一个字符串是否为另外一个字符串旋转之后的字符串。

例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.



AABCD左旋一个字符得到ABCDA

AABCD左旋两个字符得到BCDAA


AABCD右旋一个字符得到DAABC

AABCD右旋两个字符得到CDAAB

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>

char *my_strncat(char *dest, const char *src, size_t count)
{
	assert(dest);
	assert(src);
	char *ret = dest;
	
	while (*dest)
	{
		dest++;
	}
	while (count--)
	{
		*dest++ = *src++;
	}
	*dest = '\0';
	return ret;
}

char *my_strstr(char *str1, const char *str2)//
{
	char*ptr = str1;
	char*p1 = NULL;
	char*p2 = NULL;
	
	while (*ptr)
	{
		p1 = ptr;
		p2 = str2;
		while (*p1 == *p2)
		{
			p1++;
			p2++;
			if (*p2 == '\0')
			{
				return ptr;
			}
		}
		ptr++;
	}
	return NULL;

}

int main()
{
	char arr[20] = "abcdef";//预留空间
	char *p = "cdefab";
	int len = strlen(arr);
	
	my_strncat(arr, arr, len);
	char*ch=my_strstr(arr, p);
	
	if (ch != NULL)
	{
		printf("%p\n", ch);
		printf("%s", ch);
	}
	else
	{
		printf("not  exit");
	}
	
	system("pause");
	return 0;
}