对于一个字符串,请设计一个算法,将字符串的长度为len的前缀平移到字符串的最后。
给定一个字符串A和它的长度,同时给定len,请返回平移后的字符串。
思路:
逆序前缀;
逆序后缀;
逆序所有。
这样在O(N)的时间里可以完成
void reverse(char*const P,char*const Q){
char* p=P,*q=Q;
while(p<q){
char x=*p;
*p=*q;
*q=x;
p++;
q--;
}
}
string stringTranslation(string A, int n, int len) {
if(len<=0)
return A;
char* a=&A[0];
reverse(a,a+len-1);
reverse(a+len,a+n-1);
reverse(a,a+n-1);
return A;
}