C语言:实现旋转字符串。

#include<stdio.h>
#include<string.h>
#include<assert.h>
//三步法左旋转2个字符串
//abcdef 
//bafedc--ab逆转,cdef逆转
//cdefab--整体逆转,得到结果。
void reverse(char* left, char* right)
{
    
    
	assert(left != NULL);
	assert(right != NULL);
	while (left<right)
	{
    
    
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}
void left_move(char arr[], int sz)
{
    
    
	assert(arr);
	
	int len = strlen(arr);
	assert(sz <= len);
	reverse(arr, arr + sz - 1);//逆转左边
	reverse(arr + sz, arr + len - 1);//逆转右边
	reverse(arr, arr + len - 1);//逆转整体
}
int main()
{
    
    
	char arr[20] = "abcdef";
	
	left_move(arr, 9);
	printf("%s\n", arr);

	return 0;
}

猜你喜欢

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