本题的关键在于如何有效地模拟每一次的字符移动。本质是每次都要往后移动两次,每一次操作都要将当前下标的字符移动到字符串末尾并标记已用,重复这个过程直到完成 ( n ) 次操作。考虑到字符串的长度可能达到 ( 10^6 ),我们需要采用高效的方法以避免超时。
c++
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
signed main()
长度为 n 只包含小写字母的字符串 S ,下标 1 开始。
进行 n 次操作第 i 次操作将 Si 移动到字符串末尾。输出 n 次操作后的字符串。
例如字符串"abqde",第一步"bqdea",第二步"bdeaq",第三步"bdaqe",第四步"bdaeq",第五步"bdaeq"。
在一行上输入一个由小写字母构成的字符串,长度记为 n(1≤n≤106)。
在一行上输出一个字符串,表示操作后的字符串。
输入
paectc
输出
accept
说明
第一步 aectcp,第二步 actcpe,第三步 accpet,第四步 accetp,第五步 accept,第六步 accept。
输入
abqde
输出
bdaeq