先用两个数组保存L,R的值,再遍历
string pushDominoes(string dominoes) {
string res = dominoes;
vector<int> left, right;
for(int i = 0; i < res.size(); i++) {
if(res[i] == 'l') left.push_back(i);
else if(res[i] == 'r') right.push_back(i);
}
int i = 0, j = 0, pre = 0;
while(i < left.size() && j < right.size()) {
if(left[i] < right[j]) {
for(int k = pre; k < left[i]; k++)
res[k] = 'l';
i++;
}
else {
for(int k = right[j]; k < right[j] + (left[i] - right[j]) / 2; k++)
res[k] = 'r';
for(int k = right[j] + (left[i] - right[j]) / 2 + 1; k < left[i]; k++)
res[k] = 'l';
i++, j++;
}
pre = left[i] + 1;
}
if(i < left.size()) {
for(int k = pre; k < left.back(); k++)
res[k] = 'l';
}
else {
for(int k = right[j]; k < res.size(); k++)
res[k] = 'r';
}
return res;
}