Array Operations
string main = "abc";
vector<string> cmds =
{
"00L", // -> zbc
"22L", // -> zbb
"02R", // -> acc
};void decrement_str(string &s) {
for (int j = 0; j < s.length(); j++) {
if (s[j] == 'a')
s[j] = 'z';
else s[j]--;
}
}
void increment_str(string &s) {
for (int j = 0; j < s.length(); j++) {
if (s[j] == 'z')
s[j] = 'a';
else s[j]++;
}
}
string rollingString(string s, vector < string > operations) {
string sub = "";
for (int i = 0; i < operations.size(); i++) {
string ith_op = operations[i];
int i1 = ith_op[0] - '0';
int i2 = ith_op[1] - '0';
if (i1 == i2) {
sub = s[i1]; // or i2
}
else sub = string(s.begin() + i1, s.begin() + i2 + 1);
if (ith_op[2] == 'L') decrement_str(sub);
else if (ith_op[2] == 'R') increment_str(sub);
string front = string(s.begin(), s.begin() + i1);
string end = string(s.begin() + i2 + 1, s.end());
s = front + sub + end;
}
return s;
}
int main()
{
string main = "abc";
vector<string> cmds =
{
"00L", // -> zbc
"22L", // -> zbb
"02R", // -> acc
};
cout << rollingString(main, cmds) << endl;
}Last updated