#include<iostream>
#include<string>
using namespace std;
//反转[low high]之间字符串
void Reverse_str(string& str, int low, int high)
{
char temp;
while (low<high)
{
temp = str[low];
str[low] = str[high];
str[high] = temp;
++low;
--high;
}
}
void RotateRightOfStr(string& str, int n)
{
int len = str.length();
if (len <= 0) return;
n = n%len;
Reverse_str(str, 0, len-n- 1); //反转前len-n长度部分
Reverse_str(str, len-n, len - 1); //反转后n长度部分
Reverse_str(str, 0, len - 1); //反转整个字符串
}
int main()
{
string str = "abcdefgh";
int n; //n为向右移动的位数
cin >> n;
RotateRightOfStr(str, n);
cout<<str;
return 0;
}
#include<iostream>
#include<string>
using namespace std;
//反转[low high]之间字符串
void Reverse_str(char* str, int low, int high)
{
char temp;
while (low<high)
{
temp = str[low];
str[low] = str[high];
str[high] = temp;
++low;
--high;
}
}
void RightLoopMove(char* str, int n, int len)
{
if (!str||len==0)return;
n = n%len;
Reverse_str(str, 0, len-n- 1); //反转前len-n长度部分
Reverse_str(str, len-n, len - 1); //反转后n长度部分
Reverse_str(str, 0, len - 1); //反转整个字符串
}
int main()
{
char str[] = "abcdefgh";
int n; //n为向右移动的位数
cin >> n;
RightLoopMove(str, n, sizeof(str)/sizeof(char)-1);
cout<<str;
return 0;
}