Ky tu dau tien khong lap

Xem dưới dạng PDF

Gửi bài giải


Điểm: 10
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
đầu vào: stdin
Đầu ra: stdout

Tác giả:
Kiểu bài tập

Cho một chuỗi S gồm các chữ cái thường. Duyệt chuỗi từ trái sang phải, sau mỗi ký tự, hãy in ra ký tự đầu tiên không bị lặp tính đến thời điểm hiện tại. Nếu không có, in ra -1.

Sử dụng queue kết hợp mảng đếm tần số: mỗi khi gặp ký tự c, tăng tần số của c, đẩy c vào queue. Khi cần in, loại bỏ các ký tự ở đầu queue có tần số > 1.

Đầu vào
  • Dòng đầu tiên chứa số nguyên N (1 ≤ N ≤ 10^5) — độ dài chuỗi.
  • Dòng thứ hai chứa chuỗi S độ dài N, gồm các chữ cái thường 'a'..'z'.
Đầu ra

In ra N ký tự hoặc -1, mỗi kết quả cách nhau bởi khoảng trắng.

Ví dụ
Input:
7
aabcdeb

Output:
a -1 b b c c d
Giải thích
  • Sau 'a': first unique = a
  • Sau 'a': không có → -1
  • Sau 'b': first unique = b
  • Sau 'c': first unique = b (vì 'b' chưa lặp)
  • Sau 'd': first unique = c (vì 'b' đã lặp)
  • Sau 'e': first unique = c
  • Sau 'b': first unique = d

Nhận xét

Không có ý kiến tại thời điểm này.