Cho chuỗi chỉ chứa 'L' (quay trái) và 'R' (quay phải). Khởi đầu hướng Bắc (N). Tìm hướng cuối cùng.
Ví dụ
"RRLRLLR" → Output: E
Giải thích: N → RR → S → LR → N → LL → N → R → E.
Thuật toán
- Đếm: 'R' = +1, 'L' = -1.
- Tổng modulo 4:
- Dương: 0→N, 1→E, 2→S, 3→W
- Âm: 0→N, -1→W, -2→S, -3→E
Code C++
#include <bits/stdc++.h>
using namespace std;
string getDirection(string s) {
int cnt = 0;
for (char c : s) cnt += (c == 'R') ? 1 : -1;
cnt %= 4;
if (cnt < 0) cnt += 4; // chuẩn về [0,3]
const char* dirs = "NESW"; // 0:N, 1:E, 2:S, 3:W
return string(1, dirs[cnt]);
}
int main() {
cout << getDirection("RRLRLLR"); // E
return 0;
}
Kết quả
E
Lưu ý: Code gốc có bug kiểm tra s[0] == '\n' không cần thiết. Phiên bản trên đơn giản, đúng.