Đề bài
C# records so sánh theo giá trị: hai records bằng nhau khi tất cả các trường của chúng bằng nhau, ngay cả khi chúng là hai đối tượng khác nhau. Điều đó làm việc xóa trùng trở nên dễ dàng.
Mỗi record được viết name,city. Hãy bỏ khoảng trắng ở đầu và cuối của cả hai trường; sau khi trim, hai records bằng nhau khi cả hai trường khớp chính xác (phân biệt chữ hoa chữ thường).
Implement unique_records(records).
Input
records: Các records, theo thứ tự.
Output
Trả về các records phân biệt theo đúng thứ tự chúng xuất hiện lần đầu, được viết name,city với các trường đã được trim.
Ràng buộc
0 ≤ số bản ghi ≤ 100,000
Mỗi trường dài 1 đến 30 ký tự và không có dấu phẩy
Ví dụ
Đầu vào:
records = ["Ada,London", "Lin, Hanoi", "Ada , London"]
Kết quả mong đợi:
expected = ["Ada,London", "Lin,Hanoi"]
Đầu vào:
std::vector<std::string> records = {"Ada,London", "Lin, Hanoi", "Ada , London"};
Kết quả mong đợi:
std::vector<std::string> expected = {"Ada,London", "Lin,Hanoi"};
Đầu vào:
string[] records = new string[] {"Ada,London", "Lin, Hanoi", "Ada , London"};
Kết quả mong đợi:
string[] expected = new string[] {"Ada,London", "Lin,Hanoi"};
Giải thích
Sau khi trim, record thứ ba bằng record đầu tiên, nên nó bị loại bỏ: ["Ada,London", "Lin,Hanoi"].
Đầu vào:
records = ["ada,Paris", "Ada,Paris"]
Kết quả mong đợi:
expected = ["ada,Paris", "Ada,Paris"]
Đầu vào:
std::vector<std::string> records = {"ada,Paris", "Ada,Paris"};
Kết quả mong đợi:
std::vector<std::string> expected = {"ada,Paris", "Ada,Paris"};
Đầu vào:
string[] records = new string[] {"ada,Paris", "Ada,Paris"};
Kết quả mong đợi:
string[] expected = new string[] {"ada,Paris", "Ada,Paris"};
Giải thích
Phân biệt chữ hoa chữ thường, nên hai records này khác nhau: ["ada,Paris", "Ada,Paris"].
Hướng tiếp cận
Hãy tự thử trước, sau đó mở từng gợi ý một.
Gợi ý 1
Cắt khoảng trắng cả hai trường trước khi so sánh.
Gợi ý 2
Một set các cặp (name, city) ghi nhớ những record đã gặp.
Gợi ý 3
Xuất mỗi record mới ở lần đầu nó xuất hiện, theo thứ tự đầu vào.
Độ phức tạp mong đợi
thời gian O(tổng độ dài), bộ nhớ phụ O(số bản ghi)
Tham khảo
Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.