字符串左移:
void *pszStringRotate(char *pszString, intnCharsRotate)
比如ABCDEFG,移3位变DEFGABC,要求空间复杂度O(1),时间复杂度O(n)。
#include <iostream>
using namespace std;
void ReverseString( char* pBegin, char* pEnd ){
while( pBegin < pEnd ){
char ch = *pBegin;
*pBegin++ = *pEnd;
*pEnd-- = ch;
}
}
char *pszStringRotate(char *pszString, int nCharsRotate){
char * end = pszString;
while( *end++ );
end = end-2;
if( pszString + nCharsRotate -1 > end ) return NULL;
ReverseString( pszString, pszString+nCharsRotate-1);
ReverseString( pszString+nCharsRotate, end);
ReverseString( pszString, end);
return pszString;
}
int main(){
char str[] = "ABCDEFG";
char *s = pszStringRotate( str, 3 );
if( s )
cout << s <<endl;
return 0;
}