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

更新日期: 2020 年 9 月 2 日

620 次瀏覽

開始您的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.