左旋字符串_三步逆序

思路

”abcdef“这个字符串如果要左旋2个字符,可以分为“ab”,"cdef"两个字符串,”ab“字符串反转,“cdef”也反转,最后再把反转完成的整个字符串也反转一次。注意:旋转的字符个数不能超过字符串长度。

#include <stdio.h>

void reverce(char* start,char* end)
{
	char* left = start;
	char* right = end;
	while (left < right)
	{
		char tmp = *left;
		*left = *right;
		*right = tmp;

		left++;
		right--;
	}

}

void left_move(char* str, int k)
{
	int len = strlen(str);

	reverce(str,str+k-1);
	reverce(str + k, str + len - 1);
	reverce(str, str + len - 1);


}


/// <summary>
/// 实现函数,可以左旋字符串中的k个字符。
/// 
/// 如:abcd 左旋一个字符:bcda
/// 如:abcd 左旋二个字符:cdab
/// 
/// </summary>
/// <returns></returns>
int main()
{
	char arr[] ="abcdef";//需要移动的字符数组。

	int k = 2; //需要移动的字符个数。
	left_move(arr, k);

	printf("%s", arr);
	return 0;
}

posted @ 2021-03-17 09:40  别学无止境  阅读(72)  评论(0)    收藏  举报