【題解】Codeforces 598B. Queries on a String

【題目敘述】https://codeforces.com/problemset/problem/598/B
【Tag】字串
【sample input】

abacaba
2
3 6 1
1 4 2
  • abacaba
  • abbacaa (3 6 1)
  • abbacaa
  • aabbcaa (1 4 2 – #1)
  • baabcaa (1 4 2 – #2)
#include <iostream>
#include <string>
using namespace std;
 
int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    string s;
    cin >> s;
    int m;
    cin >> m;
    while (m--) {
        int l, r, k;
        cin >> l >> r >> k;
        l--;
        r--;
        string s1 = s.substr(l, r - l + 1);
        int sz = (int)s1.size();
        //先取餘數,減少運算次數
        k = k % sz;
        string s2 = s1.substr(sz - k, k);
        s2 = s2 + s1.substr(0, sz - k);
        s = s.substr(0, l) + s2 + s.substr(r+1, s.size() - r);
    }
    cout << s << "\n";
    return 0;
}
分享本文 Share with friends