#include<stdio.h>
#include<string.h>
#include<assert.h>
//************************************************************************************//
三步逆序法
左旋 n 个字符串
//************************************************************************************//
************************************************************************************//
// 三步逆序法
//左旋 n 个字符串
************************************************************************************//
void reverse(char* left, char* right)
{
assert(left);
assert(right);
while(left < right)
{
int tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
void Move_char(char * input, int n)
{
assert(input);
int len = strlen(input);
assert(n <= len);
reverse(input, input + n - 1); //逆序左边
reverse(input + n, input + len - 1); //逆序右边
reverse(input, input + len - 1); //逆序整体
}
int main()
{
//char input[] = "abcdef";
char input[20];
int k = 0;
int n = 2; //需要左旋的字符个数;
printf("请输入字符串:\n");
scanf_s("%s", input,20); //scanf_s函数在输入字符串时必须加上缓冲区的大小
Move_char(input, n);
printf("%s\n",input);
return 0;
}
三步逆序法 ---左旋 n 个字符串
最新推荐文章于 2024-09-27 19:15:27 发布