题目:给定数组 str[],循环左移m位。即如果str="ABCDEF",循环左移2位得到 "CDEFAB"

算法:使用两个倒序,倒序AB得到BA,倒序CDEF得到FEDC,最后全部BAFEDC全部倒序CDEFAB

  1. #include <string.h> 
  2. #include <iostream> 
  3. using namespace std; 
  4.  
  5. void reverse(char *str,int left,int right) 
  6.         char tmp; 
  7.  
  8.         for(int i=left,j=right;i<j;i++,j--) 
  9.         { 
  10.                 tmp=str[i]; 
  11.                 str[i]=str[j]; 
  12.                 str[j]=tmp; 
  13.         } 
  14.  
  15. void shift(char *str,int m, int len) 
  16.         reverse(str,0,m-1); 
  17.         reverse(str,m,len-1); 
  18.         reverse(str,0,len-1);