写一个函数, 判断一个字符串是否为另一个字符串旋转之后的字符串

C语言 写一个函数, 判断一个字符串是否为另一个字符串旋转之后的字符串

例如: 给定S1 = AABCD 和 S2 = BCDAA, 返回1
给定S1 = abcd 和 S2 = ACBD, 返回0
AABCD 左旋一个字符得到 ABCDA
AABCD 左旋两个字符得到 BCDAA
AABCD 右旋一个字符得到 DAABC

#include 
#include 
#include 

#pragma warning(disable:4996)

// 只需要把原字符串来两遍, 包括了左旋和右旋的所有可能性 7次会到原字符串
// 再看一下待查字符串是不是它的字符串(来两遍后的字符串里面的)
// 如果是 找到了 则strstr返回值 绝不是空NULL

int strRoundStr(char* src, char* find){
     
	char tmp[256] = {
      0 };

	// 使src在tmp 里来两遍
	strcpy(tmp, src);
	strcat(tmp, src);

	// 如果返回值不是空 返回1 代表找到了
	// 如果返回值为0, 则没找到
	return strstr(tmp, find) != NULL;
}
int main(){
     

	char src[] = "ABCDEFG";

	char find[] = "GA";// 算左旋一个之后的结果
	printf("%d\n", strRoundStr(src, find));// 找到了

	char find1[] = "GAa";
	printf("%d\n", strRoundStr(src, find1));// 没找到

	system("pause");
	return 0;
}

你可能感兴趣的:(编程题,c语言)