समस्या
पॉलिमॉर्फ़िज़्म अलग-अलग ऑब्जेक्ट पर एक ही मेथड बुलाने देता है और हर ऑब्जेक्ट का अपना व्यवहार मिलता है। यहाँ हर चैनल संदेश की लागत अपने तरीके से गिनता है।
हर संदेश <channel> <text> के रूप में है, जहाँ text पहले स्पेस के बाद का सब कुछ है:
email: लागत 1।sms: टेक्स्ट के हर शुरू हुए 160 कैरेक्टर ब्लॉक के लिए 5 (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 के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।