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

Notification Costs

Send messages through email, SMS and push channels that each compute their own cost.

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

  • Give each channel its own cost rule
  • Round up to whole blocks of characters
  • Split a message into channel and text

Đề bài

Xem bản dịch

Polymorphism lets code call the same method on different objects and get behaviour specific to each one. Here every channel computes the cost of a message its own way.

Each message is <channel> <text>, where the text is everything after the first space:

  • email: costs 1.
  • sms: costs 5 for every started block of 160 characters of text (1 to 160 characters is one block).
  • push: free.

Implement notification_cost(messages).

Input

messages: The messages to send. SMS texts have at least one character.

Output

Return the total cost.

Ràng buộc

0 ≤ number of messages ≤ 10,000

Texts have 1 to 2,000 characters

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 costs 1, the short SMS uses one block (5) and push is free: 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 characters need two 160-character blocks: 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

Split each message once at the first space into channel and text.

Gợi ý 2

For SMS, count blocks with ceiling division: (length + 159) / 160.

Gợi ý 3

Push messages cost nothing, so they add 0.

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

O(total length) time, O(1) extra space

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.