#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
//Reverse a char ,then k times
string RightShift(string s, int N ,int k){
k=k%N;
for(int i=0;i<k;i++){
int t=s[N-1];
for(int j=N-1;j>=0;j--){
s[j+1]=s[j];
}
s[0]=t;
}
return s ;
}
//通过逆序法来实现字符串的循环右移
//完全逆转字符串,此函数实现'abcd' 变为'dcba'
void Reverse(string &s,int befor ,int end){
for(;befor<end;){
char temp=s[befor];
s[befor]=s[end];
s[end]=temp;
befor++;
end--;
}
}
//调用Reverse函数实现,字符串的循环右移
string RightShiftByReverse(string s ,int N,int k){
k=k%N;
Reverse(s,0,N-k-1);
Reverse(s,N-k,N-1);
Reverse(s,0,N-1);
return s;
}
int main(int argc, char *argv[])
{
string s="HelloWorld";
//RightShift(s,10,4);
//cout<<RightShift(s,10,4)<<endl;
cout<<RightShiftByReverse(s,10,4)<<endl;
system("pause");
return 0;
}
C++ 字符串循环右移
最新推荐文章于 2024-06-23 16:57:52 发布