समस्या
Programs log files लिखते हैं, जिनमें हर line पर एक event होता है। हर line एक level word से शुरू होती है, उसके बाद एक space और message होता है, उदाहरण के लिए ERROR disk full.
दिए गए log file की lines के लिए, उन lines की गिनती करें जिनका पहला word बिल्कुल INFO, WARNING या ERROR है। जो lines किसी और चीज़ से शुरू होती हैं (lowercase levels सहित) उन्हें ignore किया जाता है।
Implement count_log_levels(lines).
इनपुट
lines: file की lines, line breaks के बिना।
आउटपुट
[info_count, warning_count, error_count] लौटाएँ.
सीमाएँ
0 ≤ लाइनों की संख्या ≤ 10,000
हर लाइन में अधिकतम 200 कैरेक्टर
उदाहरण
इनपुट:
lines = ["INFO server started", "ERROR disk full", "INFO user login", "WARNING slow query"]
अपेक्षित आउटपुट:
expected = [2, 1, 1]
इनपुट:
std::vector<std::string> lines = {"INFO server started", "ERROR disk full", "INFO user login", "WARNING slow query"};
अपेक्षित आउटपुट:
std::vector<long long> expected = {2, 1, 1};
इनपुट:
string[] lines = new string[] {"INFO server started", "ERROR disk full", "INFO user login", "WARNING slow query"};
अपेक्षित आउटपुट:
long[] expected = new long[] {2, 1, 1};
व्याख्या
दो lines INFO से शुरू होती हैं, एक WARNING से और एक ERROR से: [2, 1, 1].
इनपुट:
lines = ["info lowercase", "DEBUG details", "ERROR"]
अपेक्षित आउटपुट:
expected = [0, 0, 1]
इनपुट:
std::vector<std::string> lines = {"info lowercase", "DEBUG details", "ERROR"};
अपेक्षित आउटपुट:
std::vector<long long> expected = {0, 0, 1};
इनपुट:
string[] lines = new string[] {"info lowercase", "DEBUG details", "ERROR"};
अपेक्षित आउटपुट:
long[] expected = new long[] {0, 0, 1};
व्याख्या
"info" "INFO" नहीं है और DEBUG की गिनती नहीं होती। आखिरी line सिर्फ शब्द ERROR है, जो count होता है: [0, 0, 1].
कैसे हल करें
पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।
संकेत 1
हर लाइन का सिर्फ़ पहला शब्द मायने रखता है।
संकेत 2
पहले स्पेस पर एक बार बाँटें और उस शब्द की सटीक तुलना करें।
संकेत 3
बड़े-छोटे अक्षर मायने रखते हैं: "info" और "INFO" अलग हैं, और कोई लाइन सिर्फ़ लेवल शब्द भी हो सकती है।
अपेक्षित जटिलता
समय O(कुल लंबाई), अतिरिक्त स्थान O(1)
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।