正经题解|电子打印机
2024-09-02 11:38:52
发布于:浙江
23阅读
0回复
0点赞
题目大意
给出一个字符串,并且首尾相连,即 , 现在要求将字符串当中的字符集体向后移动位,求解位移后的字符串。
解题思路
我们设定字符串的长度为,假若的情况下,实际上每位位移的格子相当于 格,例:
abcde
右移1格为eabcd
abcde
右移6格为eabcd
不难发现,在字符串长度为的情况下右移1格与右移6格的结果相等,那么我们就可以得等价关系 $ m = m % n$。
进一步换算,假若字符串下标从0开始进行计算,那么转移后第位的位置与原来字符串的位置表达式可以写为
时间复杂度分析
演示代码
#include<bits/stdc++.h>
using namespace std;
void solve()
{
string s;
int m;
cin >> s >> m ;
int len = s.size();
m %= len;
for(int i = 0 ; i < s.size() ; i ++ )
{
cout << s[(len - m + i) % len];
}
cout << endl;
}
int main()
{
solve();
return 0;
}
这里空空如也
有帮助,赞一个