字符串循环右移(一道面试题的代码实现)

来源:互联网 发布:知豆山东生产基地 编辑:程序博客网 时间:2024/06/11 13:25

#include <stdio.h>

void revStr(char* arr, const size_t N ){
  for(int i=0;i<N/2;i++){
  char tmp = arr[i];
  arr[i]=arr[N-1-i];
  arr[N-1-i]=tmp;
 }
}

void moveStr(char* arr, const size_t N, const size_t K){
 int k=K%N;
 if (k<1) return;
 revStr(arr, k);
 revStr(&arr[k], N-k);
 revStr(arr, N);
}


int main(){
 char str[12]={'a','b','c','d','e','f','g','h','i','j','k','l'};
 int size = 12,i=0;
 while(size--)
  printf("%c",str[i++]);
 printf("\n");
 moveStr(str,12,5);
 size = 12,i=0; 
 while(size--)
  printf("%c",str[i++]);
  
getchar();
}

原创粉丝点击