Danh sách

Phân tích Query String URL thành Object (Parse Query String)

Trung bình
Thuật Toán Web Thực Chiến (Practical Web Algorithms) 1200ms 256MB

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)
Một dòng chứa chuỗi queryString
Định Dạng Đầu Ra (Output)
Đối tượng JSON đại diện cho các tham số đã phân tích
Ràng Buộc (Constraints)
  • 0 <= queryString.length <= 10^4
Ví Dụ Kiểm Thử Mẫu
Ví dụ 1:
Input:
"page=1&sort=asc"
Output:
{"page":"1","sort":"asc"}
Giải thích: Mỗi key xuất hiện 1 lần
Ví dụ 2:
Input:
"tag=web&tag=api&page=2"
Output:
{"page":"2","tag":["web","api"]}
Giải thích: tag xuất hiện 2 lần thành mảng
Gợi ý được sắp xếp theo cấp độ tiến dần. Hãy mở từng gợi ý khi bạn thực sự cần thêm định hướng.

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].

Vui lòng đăng nhập

Đăng nhập tài khoản học viên để xem lịch sử nộp bài của bạn.

Đăng nhập
Ctrl + Enter: Chạy thử
Dữ liệu đầu vào (Input):
"page=1&sort=asc"
Kết quả kỳ vọng (Expected Output):
{"page":"1","sort":"asc"}
Dữ liệu đầu vào (Input):
"tag=web&tag=api&page=2"
Kết quả kỳ vọng (Expected Output):
{"page":"2","tag":["web","api"]}
Nhập STDIN của bạn (Mỗi dòng một tham số):

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.

Đang gửi mã và thực thi trên Sandbox Engine...
Nhấn Ctrl+Enter để chạy

vừa nâng cấp PRO khóa 1 phút trước   Tìm hiểu khóa học