题目:
输入一个字符串,对字符串进行右旋。给定一个下标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; }