//使用两次翻转的方法来对付左旋转字符串
//即----字符串的循环左移
#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;
}
【100题】左旋转字符串-----整体翻转+局部再次翻转
最新推荐文章于 2021-09-03 22:24:54 发布