个人认为,你这段代码
```cpp
while(dq1.size() || dq2.size()) {
if(dq1.front() == dq2.front() && dq1.size() && dq2.size()) { ah += 'L', ed = 'R' + ed, dq1.pop_front(), dq2.pop_front(); }
else if(dq2.front() == dq2.back() && dq2.size() >= 2) { ah += 'L', ed = 'L' + ed, dq2.pop_front(), dq2.pop_back(); }
else if(dq1.front() == dq1.back() && dq1.size() >= 2) { ah += 'R', ed = 'R' + ed, dq1.pop_back(), dq1.pop_front(); }
else if(dq1.back() == dq2.back() && dq1.size() && dq2.size()) { ah += 'R', ed = 'L' + ed, dq1.pop_back(), dq2.pop_back(); }
else { R = 0; break; }
}
```
把 `ed='L'+ed` 改成 `ed+='L'`,然后输出的时候倒序遍历每个字符。
因为字符串 `+` 的复杂度是 $\mathcal{O(1)}$ 的,但是赋值 `=` 复杂度是 $\mathcal{O(n)}$。所以尽量用 `+=` 和 `push_back()` 这种内置函数。
by CoderXL @ 2023-10-21 11:12:10