1 //参考书籍:编程之法 2 3 #include <stdio.h> 4 char* leftRotateString(char *s, int n, int m); 5 int main(int argc, const char * argv[]) { 6 7 char s[] = "abcde"; 8 printf("旋转2位字符串位为%s ",leftRotateString(s, 5, 2)); 9 return 0; 10 11 } 12 13 14 /** 15 字符串的蛮力旋转 较优的方法下次更新 16 17 @param s 字符串 18 @param n 字符串的长度 19 */ 20 void leftShiftOne(char *s, int n){ 21 22 //保存第一个字符串 23 char t = s[0]; 24 for (int i = 1; i < n; i++) { 25 //往前挪 26 s[i-1] = s[i]; 27 } 28 // "最后一位" 赋值为 "第一位" 的值 29 s[n-1] = t; 30 31 } 32 33 34 /** 35 把长度为n的字符串的 m 位进行旋转操作 36 37 @param s 字符串s 38 @param n 字符串s的长度 39 @param m 字符串s要旋转的位数 40 41 @return 返回旋转的结果 42 */ 43 char* leftRotateString(char *s, int n, int m){ 44 while(m--){ 45 leftShiftOne(s, n); 46 } 47 return s; 48 }