Fork me on GitHub

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;

posted @ 2018-04-11 20:02  风中等待  阅读(148)  评论(0编辑  收藏  举报