//左旋转字符串 #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)<<" "; cout<<shiftLeftThreeStep(str,6)<<" "; }