#include<stdio.h>
#include<stdlib.h>
#include <string.h>
#include<assert.h>
void Reverse( char* pBegin,char* pEnd)
{
while(pBegin<pEnd)
{
char temp=*pBegin;
*pBegin=*pEnd;
*pEnd=temp;
++pBegin;
--pEnd;
}
}
//向左旋转k个字符
char* LeftRorate(char* pString,int rorateNumber)
{
if(pString==NULL)
return NULL;
int length=strlen(pString);
rorateNumber=rorateNumber%length;
if(rorateNumber<=0)
return pString;
char* pBegin=pString;
char* pRorate=pString+rorateNumber-1;
char* pEnd=pString+length-1;
Reverse(pBegin,pRorate);
Reverse(pRorate+1,pEnd);
Reverse(pBegin,pEnd);
return pString;
}
char* ReverseSentence(char* pSentence)
{
assert(pSentence!=NULL);
char* pBegin=pSentence;
char* pEnd=pSentence+strlen(pSentence)-1;
Reverse(pBegin,pEnd);
pEnd=pBegin;
while(*pBegin!='\0')
{
if(*pBegin==' '||*pBegin=='\0')
{
++pBegin;
++pEnd;
}
else if(*pEnd==' '||*pEnd=='\0')
{
Reverse(pBegin,pEnd-1);
pBegin=pEnd;
}
else
++pEnd;
}
return pSentence;
}
int main()
{
char s1[]="Today is Friday!";
ReverseSentence(s1);
printf("%s\n",s1);
char s2[]="12345678";
LeftRorate(s2,3);
printf("%s\n",s2);
}