//使用两次翻转的方法来对付左旋转字符串 //即----字符串的循环左移 #include <iostream> using namespace std; void ReverseString(char *pStart,char *pEnd) { if(pStart != NULL || pEnd != NULL) { while(pStart <= pEnd) { swap(*pStart,*pEnd); pStart++; pEnd--; } } } char *LeftRotateString(char *p,unsigned int n) { if(p != NULL) { int nLength = static_cast<int> (strlen(p)); if(nLength>0 || n>=0 && n <= nLength) { char *pFirstStart = p; char *pFirstEnd = p+n-1; char *pSecondStart = p+n; char *pSecondEnd = p+nLength-1; ReverseString(pFirstStart,pFirstEnd); ReverseString(pSecondStart,pSecondEnd); ReverseString(pFirstStart,pSecondEnd); } } return p; } void main() { char str[] = "abcdefg"; cout << LeftRotateString(str,4) <<endl; }