给定一个字符串S[0,1,...,N-1],要求把S的前k个字符移动到S的尾部,如把字符串"abcdef"前面的2个字符'a','b'移动到字符串的尾部,得到新字符串“cdefab”;即字符串循环左移k
#include <iostream>
#include <stdio.h>
using namespace std;
void Sift(char* sdata,int size,int snum,int shiftType){
switch (shiftType)
{
case 0://表示左移
{
for(int i=0;i<snum;i++){
char temp=sdata[size-1];
for(int j=size-1;j>0;j--){
sdata[j]=sdata[j-1];
}
sdata[0]=temp;
}
break;
}
case 1:
{
for(int i=0;i<snum;i++){
char temp=sdata[0];
for(int j=0;j<size-1;j++){
sdata[j]=sdata[j+1];
}
sdata[size-1]=temp;
}
break;
}
}
}
int main(int argc,char* argv[]){
char testData[]={"JulyEdu"};
printf("%s\n",testData);
Sift(testData,7,2,0);
printf("左移%s\n",testData);
char testData1[]={"JulyEdu"};
printf("%s\n",testData1);
Sift(testData1,7,2,1);
printf("右移%s\n",testData1);
}