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

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

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

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

#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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值