對于一個字符串坡慌,請設(shè)計一個算法,將字符串的長度為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;
}