//左旋转字符串
#include <iostream>
using namespace std;
//一位位移动
void shiftLeftOne(char *str)
{
int len=strlen(str);
char temp=str[0];
for(int i=1;i<len;i++) {
str[i-1]=str[i];
}
str[len-1]=temp;
}
char *shiftLeft(char *str,int n)
{
int len=strlen(str);
n=n%len;
while(n--) {
shiftLeftOne(str);
}
return str;
}
//三步反转
void inverse(char *str,int head,int tail)
{
while(head<tail) {
char temp;
temp=str[head];
str[head]=str[tail];
str[tail]=temp;
head++;
tail--;
}
}
char *shiftLeftThreeStep(char *str,int n)
{
int len=strlen(str);
n=n%len;
inverse(str,0,n-1);
inverse(str,n,len-1);
inverse(str,0,len-1);
return str;
}
int main()
{
char str[]="abcd";
cout<<shiftLeft(str,4)<<"\n";
cout<<shiftLeftThreeStep(str,6)<<"\n";
}