सभी चुनौतियाँ
आसान 0 हल किए गए 0% स्वीकृति

लॉग लेवल गिनें

एक log file की lines पढ़ें और count करें कि कितनी INFO, WARNING और ERROR हैं.

आप क्या सीखेंगे

  • फ़ाइल को एक-एक लाइन प्रोसेस करना
  • लाइन का पहला शब्द निकालना
  • छोटी गिनती तालिका से श्रेणियाँ गिनना

समस्या

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 कैरेक्टर

उदाहरण

उदाहरण 1
इनपुट:
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].

उदाहरण 2
इनपुट:
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 के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।

दूसरों से सीखें

समुदाय समाधान

अभी तक कोई प्रकाशित समाधान नहीं। पहला साझा करने के लिए इस चुनौती को हल करें।