Đề bài
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ụ
Đầ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.
Đầ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.