Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Tần suất ký tự

Đếm số lần xuất hiện của mỗi ký tự.

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

  • Xây dựng bảng tần suất
  • Cập nhật phần tử từ điển an toàn
  • Trả về kết quả theo thứ tự yêu cầu

Đề bài

Xem bản gốc (English)

Đếm số lần xuất hiện của từng ký tự trong text, ngoại trừ dấu cách. Báo cáo mỗi ký tự khác nhau một lần dưới dạng "ký tự:số lần", sắp xếp theo mã ký tự (chữ hoa trước chữ thường).

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

Đầu vào

text: Chuỗi cần đếm (ký tự ASCII).

Đầu ra

Trả về danh sách các mục "ký tự:số lần".

Ràng buộc

0 ≤ độ dài ≤ 10.000

Ví dụ

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

Kết quả mong đợi:
expected = ["e:1", "h:1", "l:2", "o:1"]
Đầu vào:
std::string text = "hello";

Kết quả mong đợi:
std::vector<std::string> expected = {"e:1", "h:1", "l:2", "o:1"};
Đầu vào:
string text = "hello";

Kết quả mong đợi:
string[] expected = new string[] {"e:1", "h:1", "l:2", "o:1"};

Giải thích

e:1, h:1, l:2, o:1 được sắp xếp theo ký tự: ["e:1", "h:1", "l:2", "o:1"].

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

Kết quả mong đợi:
expected = ["A:1", "a:2"]
Đầu vào:
std::string text = "a a A";

Kết quả mong đợi:
std::vector<std::string> expected = {"A:1", "a:2"};
Đầu vào:
string text = "a a A";

Kết quả mong đợi:
string[] expected = new string[] {"A:1", "a:2"};

Giải thích

Dấu cách bị bỏ qua; "A" được sắp xếp trước "a": ["A:1", "a:2"].

Hướng tiếp cận

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

Gợi ý 1

Bỏ qua khoảng trắng, nhưng đếm chính xác mọi ký tự ASCII khác như nó xuất hiện.

Gợi ý 2

Cộng dồn vào bảng tần suất, rồi xuất mỗi ký tự duy nhất một lần.

Gợi ý 3

Sắp xếp theo mã ký tự để thứ tự chữ hoa/chữ thường tự theo ASCII.

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

thời gian O(n + m log m), bộ nhớ phụ O(m)

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.