C ++中最远的起源
假设我们有一个字符串s,其中每个字符都是“L”,“R”或“?”。“L”表示向左移动一个单位,“R”表示向右移动一个单位,“?”表示“L”或“R”。如果我们位于位置0,则必须通过替换“?”来找到距0可能的最大距离。与“L”或“R”。
因此,如果输入类似于“LLRRL??”,则输出将为3,替换?。使用L向左移动5个单位,向右移动2个单位,因此最大位移为3。
为了解决这个问题,我们将遵循以下步骤-
op:=0,l:=0,r:=0
对于每个在s-
(将op增加1)
(将r增加1)
(将l增加1)
如果与“L”相同,则-
否则,当它与'R'相同时,则-
除此以外
返回最大值(l和r)-最小值(l和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