C语言:判断字符串是否由已知字符串旋转得到。

用到的字符串 函数:
strstr(str1,str2);在str1中查找str2子串,若存在,返回str1中该字串的首元素地址;若不存在,返回NULL。
strcat (str1,str2);将str2衔接到str1之后,但不能衔接str1本身。
strncat(str1,str2,n);将str2的n个字符 衔接到str1之后,可以衔接str1本身。

#include<stdio.h>
#include<string.h>
//判断arr2是否为arr1旋转字符串得到的。
//abcdefabcdef  原理:在str1后面追加一个str1
//若arr2是它的子串,则arr2是为arr1旋转字符串得到的。

int is_left_remove(char* str1, char* str2)
{
    
    
	int len = strlen(str1);
	int len2 = strlen(str2);
	if (len!=len2)
	{
    
    
		return 0;
	}
	strncat(str1, str1, 6);//在str1后面追加一个str1
	char* ret = strstr(str1, str2);
	if (ret==NULL)
	{
    
    
		return 0;
	}
	else
	{
    
    
		return 1;
	}

}
int main()
{
    
    
	char arr1[20] = "abcdef";
	char arr2[] = "cdefba";
	int ret = is_left_remove(arr1, arr2);
	if (ret==1)
	{
    
    
		printf("Yes\n");
	}
	else
	{
    
    
		printf("No\n");
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_45275802/article/details/113055449