โจทย์
Polymorphism ช่วยให้เรียกเมธอดเดียวกันบนออบเจกต์ต่างชนิดแล้วได้พฤติกรรมเฉพาะของแต่ละตัว ในที่นี้แต่ละช่องทางคำนวณค่าใช้จ่ายของข้อความในแบบของตัวเอง
แต่ละข้อความอยู่ในรูป <channel> <text> โดย text คือทุกอย่างหลังช่องว่างแรก:
email: คิด 1sms: คิด 5 ต่อทุกบล็อก 160 อักขระที่เริ่มใช้ (1 ถึง 160 อักขระนับเป็นหนึ่งบล็อก)push: ฟรี
จงเขียน notification_cost(messages).
อินพุต
messages: ข้อความที่จะส่ง ข้อความ SMS มีอย่างน้อยหนึ่งอักขระ
เอาต์พุต
คืนค่าค่าใช้จ่ายรวม
เงื่อนไข
0 ≤ จำนวนข้อความ ≤ 10,000
ข้อความยาว 1 ถึง 2,000 อักขระ
ตัวอย่าง
อินพุต:
messages = ["email Welcome!", "sms Your code is 1234", "push New follower"]
ผลลัพธ์ที่คาดหวัง:
expected = 6
อินพุต:
std::vector<std::string> messages = {"email Welcome!", "sms Your code is 1234", "push New follower"};
ผลลัพธ์ที่คาดหวัง:
long long expected = 6;
อินพุต:
string[] messages = new string[] {"email Welcome!", "sms Your code is 1234", "push New follower"};
ผลลัพธ์ที่คาดหวัง:
long expected = 6;
คำอธิบาย
อีเมลคิด 1, SMS สั้นใช้หนึ่งบล็อก (5) และ push ฟรี: 6
อินพุต:
messages = ["sms aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]
ผลลัพธ์ที่คาดหวัง:
expected = 10
อินพุต:
std::vector<std::string> messages = {"sms aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"};
ผลลัพธ์ที่คาดหวัง:
long long expected = 10;
อินพุต:
string[] messages = new string[] {"sms aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"};
ผลลัพธ์ที่คาดหวัง:
long expected = 10;
คำอธิบาย
161 อักขระต้องใช้สองบล็อกของ 160 อักขระ: 2 × 5 = 10
แนวทางการแก้
ลองทำเองก่อน แล้วค่อยเปิดคำใบ้ทีละข้อ
คำใบ้ 1
แยกแต่ละข้อความครั้งเดียวที่ช่องว่างแรกเป็นช่องทางและเนื้อหา
คำใบ้ 2
สำหรับ SMS นับบล็อกด้วยการหารปัดขึ้น: (length + 159) / 160
คำใบ้ 3
push ฟรี จึงบวก 0
ความซับซ้อนที่คาดหวัง
เวลา O(ความยาวรวม), หน่วยความจำเพิ่ม O(1)
แหล่งอ้างอิง
โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน