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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP