字符串左旋与字符串旋转结果判断

1.字符串左旋

实现一个函数,可以左旋字符串中的k个字符

例如 ABCD左旋一个字符得到BCDA   ABCD左旋两个字符得到CDAB

#include 
void string_left_rotate(char* str, int k)
{
	int i = 0;
	int n = strle(str);
	for(i = 0;i

方法2:写一个逆序函数调用三次

字符串左旋与字符串旋转结果判断_第1张图片

#include 
#include 
#include 
void resverse(char* left, char* right)
{   
    assert(left);
    assert(right);
    while(left

2.字符串旋转结果判断

写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。列如给定S1 = AABCD和S2 = BDCAA,返回1。给定S1 = abcd和S2 = ABCD,返回0。

#include 
#include  
int is_string_rotate(char*str1, char*str2)
{
	
 	int i = 0;
	int n = strle(str1);
	for(i = 0;i

每旋转一次判断一次

使用库函数法

#include 
#include  
int is_string_rotate(char*str1, char*str2)
{   
    if(strlen(str1)!=strlen(str2))
    {
    	return 0;
	}
	//1.str1字符串后面追加一个str1
	//ABCDABCAD
	int len = strlen(str1);
	strncat(str1,str1,len); 
	//2.判断str2是否为str1的子串
    char* ret = strstr(str1,str2);
	//AABCDAACD
	//BCDAA
	if(ret = NULL)
	{
		return 0;
	}
	else
	{
		return 1;
	}
	//或者不用if 直接使用语句 return ret != NULL; 
	
}

int main()
{
	char arr1[20] = "AABCD";
	char arr2[] = "BCDAA";
	int ret = is_string_rotatr(arr1,arr2);
	if(ret==1)
	{
		printf("yes\n");
	}
	else
	{
		printf("no\n");
	}
	return 0;
}

你可能感兴趣的:(#,C习题,c语言,开发语言,后端)