Quay lại danh sách thử thách
Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Ký Tự Độc Nhất Đầu Tiên

Tìm ký tự đầu tiên chỉ xuất hiện một lần.

Bạn sẽ học được gì

  • Đếm ký tự bằng từ điển
  • Duyệt lần hai để tìm ký tự duy nhất đầu tiên
  • Giải trong thời gian tuyến tính

Đề bài

Xem bản gốc (English)

Trả về chỉ số của ký tự đầu tiên trong text xuất hiện đúng một lần. Phân biệt chữ hoa và chữ thường.

Cài đặt hàm first_unique_index(text).

Đầu vào

text: Chuỗi cần kiểm tra.

Đầu ra

Trả về chỉ số, hoặc -1 nếu mọi ký tự đều lặp lại.

Ràng buộc

0 ≤ độ dài ≤ 100.000

Ví dụ

Ví dụ 1
Đầu vào:
text = "swiss"

Kết quả mong đợi:
expected = 1
Đầu vào:
std::string text = "swiss";

Kết quả mong đợi:
long long expected = 1;
Đầu vào:
string text = "swiss";

Kết quả mong đợi:
long expected = 1;

Giải thích

s lặp lại, w xuất hiện một lần tại chỉ số 1.

Ví dụ 2
Đầu vào:
text = "aabb"

Kết quả mong đợi:
expected = -1
Đầu vào:
std::string text = "aabb";

Kết quả mong đợi:
long long expected = -1;
Đầu vào:
string text = "aabb";

Kết quả mong đợi:
long expected = -1;

Giải thích

Mọi ký tự đều lặp lại: -1.

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Bạn cần ký tự xuất hiện đúng một lần, không chỉ ký tự khác đầu tiên.

Gợi ý 2

Đếm tần suất բոլոր ký tự trước, rồi tìm vị trí sớm nhất có tần suất bằng một.

Gợi ý 3

Nhớ rằng chữ hoa và chữ thường là các ký tự khác nhau.

Độ phức tạp mong đợi

thời gian O(n), bộ nhớ phụ O(k)

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.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.