按题意模拟即可,需要注意的是cpp的 insert 函数有多个重载版本,可以按个人喜好使用
本题可以是
s.insert(j, 1, s[j - 1]);
s.insert(s.begin() + j, s[j - 1]);
#include <bits/stdc++.h> using namespace std; #define int long long const int N = 2e5 + 5; int __t = 1, n, q, l, r; void solve() { cin >> n >> q; string s; cin >> s; for (int i = 1; i <= q; i++) { cin >> l >> r; for (int j = r; j >= l; j--) { s.insert(s.begin() + j, s[j - 1]); } } cout << s << "\n"; return; } int32_t main() { #ifdef ONLINE_JUDGE ios::sync_with_stdio(false); cin.tie(0); #endif // cin >> __t; while (__t--) solve(); return 0; }