Dの範囲をリバースする。
- class PermutationSignature {
- public:
- vector <int> reconstruct(string S)
- {
- vector<string> v;
- string s;
- s += S[0];
- for (int i = 1; i < (int)S.size(); ++i) {
- if (s[0] == S[i]) s += S[i];
- else {
- v.push_back(s);
- s = "";
- s += S[i];
- }
- }
- if (s.size()) v.push_back(s);
- vector <int> res;
- for (int i = 0; i <= (int)S.size(); ++i) {
- res.push_back(i + 1);
- }
- int idx = 0;
- for (int i = 0; i < (int)v.size(); ++i) {
- if (v[i][0] == 'D') {
- reverse(res.begin() + idx, res.begin() + idx + v[i].size() + 1);
- }
- idx += v[i].size();
- }
- return res;
- }
- };