Trong phát triển Web backend và frontend, việc phân tích URL Query Parameters (chuỗi truy vấn sau dấu ?) thành đối tượng xử lý là thao tác diễn ra liên tục trên mỗi HTTP Request.
Cho một chuỗi query string queryString gồm các cặp key=value liên kết với nhau bằng dấu &.
Hãy viết hàm phân tích chuỗi trên thành đối tượng JSON theo các quy tắc:
- Nếu một key chỉ xuất hiện một lần: Giá trị tương ứng là chuỗi ký tự đơn lẻ.
- Nếu một key xuất hiện từ 2 lần trở lên (như
tag=web&tag=api): Giá trị tương ứng sẽ là một mảng các chuỗi theo thứ tự xuất hiện. - Nếu chuỗi rỗng: Trả về đối tượng rỗng
{}.
Ví dụ 1:
Input: 'page=1&sort=asc'
Output: {'page': '1', 'sort': 'asc'}
Ví dụ 2:
Input: 'tag=web&tag=api&page=2'
Output: {'page': '2', 'tag': ['web', 'api']}
Định Dạng Đầu Vào (Input)
Định Dạng Đầu Ra (Output)
Ràng Buộc (Constraints)
0 <= queryString.length <= 10^4
Ví Dụ Kiểm Thử Mẫu
"page=1&sort=asc"
{"page":"1","sort":"asc"}
"tag=web&tag=api&page=2"
{"page":"2","tag":["web","api"]}
Tách Chuỗi Bằng Ký Tự Phân Cách & Hash Map O(n)
Tách chuỗi bằng dấu &, với mỗi cặp key=val:
Nếu key chưa có trong map: gán map[key] = val.
Nếu key đã có và đang là mảng: push val vào mảng.
Nếu key đã có và đang là chuỗi: chuyển thành [cũ, val].
Bấm Chạy thử để kiểm tra các bộ test mẫu hoặc Nộp bài để chấm điểm chính thức.



