1class Solution {2public:3string pushDominoes(string dominoes) {4#define SET(ch, arr) \5if (dominoes[i] == ch) { \6count = 1; \7prev = ch; \8} else if (dominoes[i] != '.') \9prev = dominoes[i]; \10if (prev == ch && dominoes[i] == '.') arr[i] = count++;1112string res = "";13char prev;14int n = dominoes.size(), count = 1;1516vector<int> left(n, 0), right(n, 0);17for (int i = 0; i < n; i++) {18SET('R', right);19}2021prev = '.';22for (int i = n - 1; i >= 0; i--) {23SET('L', left);24}2526for (int i = 0; i < n; i++) {27if (!left[i] && !right[i])28res += dominoes[i];29else if (!left[i])30res += 'R';31else if (!right[i])32res += 'L';33else if (left[i] == right[i])34res += '.';35else if (left[i] < right[i])36res += 'L';37else38res += 'R';39}4041return res;42}43};