#ifndef XINWEI_ROTATESTRING_H_
#define XINWEI_ROTATESTRING_H_
#include <iostream>
using namespace std;
void ReverseString(char *s,int from , int to){
char temp;
while (from <to){
temp=*(s+from);
*(s+from)=*(s+to);
*(s+to)=temp;
from++;
to--;
}
}
void LeftShiftOne(char* s,int n){
char temp=s[0];
int i=0;
while (i<n-1){
s[i]=s[i+1];
i++;
}
s[n-1]=temp;
}
/**
* (X^TY^T)^T=YX
* n字符串长度,m旋转前m位
*/
void LeftRotateString(char* s,int n,int m){
ReverseString(s,0,m-1);
ReverseString(s,m,n-1);
ReverseString(s,0,n-1);
}
void LeftRotateString2(char* s,int n,int m){
while (m--){
LeftShiftOne(s,n);
}
}
void RightRotateString(char* s,int n,int m){
ReverseString(s,0,n-m-1);
ReverseString(s,n-m,n-1);
ReverseString(s,0,n-1);
}
void ReverseWords(char* s){
ReverseString(s,0,strlen(s)-1);
int x=0;
for (int j = 0; j <strlen(s) ; ++j) {
if(s[j]==' '){
ReverseString(s,x,j-1);
x=j+1;
}
}
}
#endif