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

Chi phí thông báo

Gửi tin nhắn qua email, SMS và push, mỗi kênh tự tính chi phí theo cách riêng.

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

  • Cho mỗi kênh một quy tắc tính phí riêng
  • Làm tròn lên theo khối ký tự
  • Tách tin nhắn thành kênh và nội dung

Đề bài

Xem bản gốc (English)

Đa hình cho phép code gọi cùng một phương thức trên các đối tượng khác nhau và nhận hành vi riêng của từng đối tượng. Ở đây mỗi kênh tự tính chi phí của một tin nhắn theo cách riêng.

Mỗi tin nhắn có dạng <channel> <text>, trong đó text là toàn bộ phần sau khoảng trắng đầu tiên:

  • email: tốn 1.
  • sms: tốn 5 cho mỗi khối 160 ký tự đã bắt đầu (1 đến 160 ký tự là một khối).
  • push: miễn phí.

Hãy viết notification_cost(messages).

Đầu vào

messages: Các tin nhắn cần gửi. Nội dung SMS có ít nhất một ký tự.

Đầu ra

Trả về tổng chi phí.

Ràng buộc

0 ≤ số tin nhắn ≤ 10,000

Nội dung dài 1 đến 2,000 ký tự

Ví dụ

Ví dụ 1
Đầu vào:
messages = ["email Welcome!", "sms Your code is 1234", "push New follower"]

Kết quả mong đợi:
expected = 6
Đầu vào:
std::vector<std::string> messages = {"email Welcome!", "sms Your code is 1234", "push New follower"};

Kết quả mong đợi:
long long expected = 6;
Đầu vào:
string[] messages = new string[] {"email Welcome!", "sms Your code is 1234", "push New follower"};

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

Giải thích

Email tốn 1, SMS ngắn dùng một khối (5) và push miễn phí: 6.

Ví dụ 2
Đầu vào:
messages = ["sms aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]

Kết quả mong đợi:
expected = 10
Đầu vào:
std::vector<std::string> messages = {"sms aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"};

Kết quả mong đợi:
long long expected = 10;
Đầu vào:
string[] messages = new string[] {"sms aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"};

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

Giải thích

161 ký tự cần hai khối 160 ký tự: 2 × 5 = 10.

Hướng tiếp cận

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

Gợi ý 1

Tách mỗi tin nhắn một lần tại khoảng trắng đầu tiên thành kênh và nội dung.

Gợi ý 2

Với SMS, đếm số khối bằng phép chia làm tròn lên: (length + 159) / 160.

Gợi ý 3

Tin push miễn phí nên cộng 0.

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

thời gian O(tổng độ dài), bộ nhớ phụ O(1)

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.