檢查在 C++ 中根據給定方向移動後是否可以返回到起始位置
假設我們位於 (0, 0) 位置。我們有一個字串,用四個字母表示連續的方向。我們必須檢查在考慮所有給定方向後,我們是否可以返回到 (0, 0) 位置。符號是
- E 代表東
- W 代表西
- N 代表北
- S 代表南。
所以,如果輸入類似於 "EENWWS",那麼輸出將為真,向東移動兩個單位,然後向北,然後向西兩個單位,然後再次向南,所以這是起始位置。
為了解決這個問題,我們將遵循以下步驟 -
- l := 移動陣列的大小
- 如果 l 等於 0,則 -
- 返回真
- lft := 0,up := 0
- 對於初始化 i := 0,當 i < l 時,更新(i 增加 1),執行 -
- 如果 moves[i] 等於 'W',則 -
- (lft 增加 1)
- 如果 moves[i] 等於 'E',則 -
- (lft 減少 1)
- 如果 moves[i] 等於 'N',則 -
- (up 增加 1)
- 如果 moves[i] 等於 'S',則
- (up 減少 1)
- 如果 moves[i] 等於 'W',則 -
- 如果 lft 等於 0 且 up 等於 0,則 -
- 返回真
- 返回假
示例 (C++)
讓我們看看以下實現以獲得更好的理解 -
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool solve(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] == 'W') {
lft++;
}
if (moves[i] == 'E') {
lft--;
}
if (moves[i] == 'N') {
up++;
}
if (moves[i] == 'S') {
up--;
}
}
if (lft == 0 && up == 0) {
return true;
}
return false;
}
};
}
main(){
Solution ob;
cout << (ob.solve("EENWWS"));
}輸入
"EENWWS"
輸出
1
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP