題目連結:
題目意譯:
有一個機器人,一開始在位置 (0, 0),即座標平面上的原點。給定其移動之序列,判斷該機器人經過這些移動之後有沒有回到 (0, 0) 上。
移動序列以一個字串表示,moves[i] 字元表示第 i 個移動。合法移動為 R (右) 、 L (左) 、 U (上) 和 D (下)。如果機會人完成移動之後回到了原點,回傳真(true);反之,回傳假(false)。
注:機器人的面向方向完全無關緊要。「R」保證機器人會往座標平面的右方移動一次、「L」保證機器人會往座標平面的左方移動一次,以此類推。此外,假設每次移動的步伐大小皆相同。
限制:
1 ≦ moves.length ≦ 2 × 10 ^ 4
moves 字串只包含 'U' 、 'D' 、 'L' 和 'R' 之字元。
範例測資:
範例 1:
輸入: moves = "UD"
輸出: true
解釋: 機器人往上移動一次、往下一次。所有移動步伐大小皆相同,所以它回到了一開始的所在地。因此,我們回傳真。
範例 2:
輸入: moves = "LL"
輸出: false
解釋: 機器人往左移了兩次。最後落在原點左方兩「步」的距離。我們回傳假,因為結尾在的點不是原點。
範例 3:
輸入: moves = "RRDD"
輸出: false
範例 4:
輸入: moves = "LDRRLRUULR"
輸出: false
解題思維:
就是單純地模擬機器人的移動即可。令兩變數 X 、 Y 一開始都為 0 (代表一開始在原點)。
然後碰到 R 就將 X 加 1 、 L 就 X 減 1 、 U 就將 Y 加 1 、 D 就 Y 減 1 。最後看 X 、 Y 是否皆為 0 ,如果是就是回到了原點;反之則沒有。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。