C++ 中最远离原点
假设我们有一个字符串 s,其中每个字符都是“L”、“R”或“?”。“L”表示向左移动一个单位,“R”表示向右移动一个单位,“?”表示“L”或“R”。如果我们在位置 0,我们必须通过将“?”替换为“L”或“R”来找到我们可能远离 0 的最大距离。
因此,如果输入类似于“LLRRL??”,则输出将为 3,使用 L 替换 ? 向左移动 5 个单位并向右移动 2 个单位,因此最大位移为 3。
为了解决这个问题,我们将遵循以下步骤:
op := 0、l := 0、r := 0
对于 s 中的每个 it:
如果 it 与 'L' 相同,则:
(将 l 增加 1)
否则当 it 与 'R' 相同时,则:
(将 r 增加 1)
否则
(将 op 增加 1)
返回 (l and r) 的最大值 - (l and r) 的最小值 + op
让我们看看以下实现以获得更好的理解:
范例
#include <bits/stdc++.h> using namespace std; class Solution { public: int solve(string s) { int op = 0; int l = 0; int r = 0; for (auto &it : s) { if (it == 'L') { l++; } else if (it == 'R') { r++; } else { op++; } } return max(l, r) - min(l, r) + op; } }; main() { Solution ob; cout << (ob.solve("LLRRL??")); }
输入
"LLRRL??"
输出
3
广告