题目:
输入一个字符串,对字符串进行右旋。给定一个下标i,将下标0到i(包括i位置)的元素全部右旋到字符串右侧。例如,输入字符串“ABCDEFGH”,给定下标i=4,即对应元素‘E’,右旋得到的结果是“FGHABCDE”。
实现思想:
实现代码:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
void reverse(char *a,char *b)
{
assert(a != NULL);
assert(b != NULL);
while(a < b)
{
char ret = *a;
*a = *b;
*b = ret;
a++;
b--;
}
return;
}
void youxuan(char *arr,int len,int x)
{
assert(arr != NULL);
x = x%len;//防止x传参出错
reverse(arr, arr + x);//逆置前半段
reverse(arr + x + 1, arr + len - 1);//逆置后半段
reverse(arr, arr + len - 1);//逆置整个字符串
}
int main()
{
char str[] = "ABCDEFGH";
int size = sizeof(str)-1;
printf("%s\n", str);
youxuan(str, size, 4);
printf("%s\n", str);
system("pause");
return 0;
}