C++機器人返回原點


假設有一個機器人,其起始位置為 (0, 0)。如果我們有一系列機器人的移動指令,我們需要檢查這個機器人完成所有移動後是否最終停留在 (0, 0) 位置。

移動序列以字串的形式給出,字元 moves[i] 代表其第 i 次移動。符號 R 代表向右移動,L 代表向左移動,U 代表向上移動,D 代表向下移動。如果機器人完成所有移動後返回原點,則返回 true;否則返回 false。

例如,如果輸入為 "RRULLD",則輸出為 true,向右移動兩格,然後向上移動一格,然後向左移動兩格,最後向下移動一格,最終回到起始位置。

為了解決這個問題,我們將遵循以下步驟:

  • l := moves 陣列的大小

  • 如果 l 等於 0,則:

    • 返回 true

  • lft := 0, up := 0

  • for i := 0, i < l, i++ do:

    • 如果 moves[i] 等於 'L',則:

      • lft++

    • 如果 moves[i] 等於 'R',則:

      • lft--

    • 如果 moves[i] 等於 'U',則:

      • up++

    • 如果 moves[i] 等於 'D',則:

      • up--

  • 如果 lft 等於 0 且 up 等於 0,則:

    • 返回 true

  • 返回 true

示例

讓我們看下面的實現來更好地理解:

線上演示

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   bool judgeCircle(string moves) {
      int l = moves.length();
      if (l == 0) {
         return true;
      }
      int lft = 0, up = 0;
      for (int i = 0; i < l; i++) {
         if (moves[i] == 'L') {
            lft++;
         }
         if (moves[i] == 'R') {
            lft--;
         }
         if (moves[i] == 'U') {
            up++;
         }
         if (moves[i] == 'D') {
            up--;
         }
      }
      if (lft == 0 && up == 0) {
         return true;
      }
      return false;
   }
};
main(){
   Solution ob;
   cout << (ob.judgeCircle("RRULLD"));
}

輸入

"RRULLD"

輸出

1

更新於:2020年6月11日

250 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.