P-1字符串旋转
1 //反转字符串 ,abc---cba 2 #include<iostream> 3 #include<string.h> 4 using namespace std; 5 //abc---cba 6 int Reserve(char *str) 7 { 8 int len=strlen(str); 9 char *begin,*end; 10 begin=str; 11 end=begin+len-1; 12 13 if(str!=NULL) 14 { 15 while(begin<end) 16 { 17 /* 18 char temp; 19 temp=*begin; 20 *begin=*end; 21 *end=temp;*/ 22 swap(*end,*begin);//STL反转字符串 23 begin++; 24 end--; 25 } 26 } 27 return 0; 28 } 29 //将abcdef---defabc 30 char *ReverseString(char *s,int from,int to) 31 { 32 while(from<to) 33 { 34 char t=s[from]; 35 s[from++]=s[to]; 36 s[to--]=t; 37 } 38 return s; 39 } 40 char *LeftRotateString(char *s,int n,int m) 41 { 42 m%=n; 43 ReverseString(s,0,m-1); 44 ReverseString(s,m,n-1); 45 ReverseString(s,0,n-1); 46 return s; 47 } 48 int main() 49 { 50 char str1[100]; 51 int n; 52 gets(str1); 53 n=strlen(str1); 54 // Reserve(str1); 55 // puts(str1); 56 cout<<LeftRotateString(str1,n,3)<<endl; 57 return 0; 58 59 }
第一种将字符串abcdef直接反转成fedcba,用swap(),字符串第一个与最后一个交换。
第二种将字符串fedcba反转成cbafed,用三步反转法。
(1)、将分成fed、cba两部分;
(2)、fed与cba各自反转得def与abc;
(3)、将defabc在反转成cbafed;
转载请说明出处!