Cho chuỗi s gồm các ký tự 'L', 'R', '?'. 'L' đi trái 1 đơn vị, 'R' đi phải 1 đơn vị, '?' có thể thay bằng 'L' hoặc 'R'. Từ vị trí 0, tìm khoảng cách tối đa có thể đạt được.
Ví dụ: "LLRRL??" → 3 (thay ? bằng L → 5 trái, 2 phải).
Giải thuật: Đếm l (số L), r (số R), op (số ?). Kết quả = max(l,r) - min(l,r) + op.
Ví dụ
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int solve(string s) {
int op = 0, l = 0, r = 0;
for (char c : s) {
if (c == 'L') l++;
else if (c == 'R') r++;
else op++;
}
return max(l, r) - min(l, r) + op;
}
};
int main() {
Solution ob;
cout << (ob.solve("LLRRL??"));
}
Đầu vào
"LLRRL??"
Đầu ra
3