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