समस्या
लोग जो data टाइप करते हैं वह अव्यवस्थित होता है। आपको strings की एक सूची मिलती है और उनमें से पूर्ण संख्याओं को जोड़ना है, बाकी को crash होने के बजाय ignore करना है।
कोई entry तब गिनी जाएगी जब दोनों सिरों के spaces हटाने के बाद वह एक वैकल्पिक + या - sign हो, जिसके बाद एक या अधिक digits हों। बाकी सब कुछ (खाली text, "2.5" जैसी decimals, words) छोड़ दिया जाता है।
Implement sum_valid_numbers(values).
इनपुट
values: पढ़ी जाने वाली प्रविष्टियाँ।
आउटपुट
मान्य पूर्ण संख्याओं का योग लौटाएँ (यदि कोई न हो तो 0).
सीमाएँ
0 ≤ प्रविष्टियों की संख्या ≤ 1,000
हर प्रविष्टि में अधिकतम 20 कैरेक्टर; मान्य संख्याएँ 64-बिट पूर्णांक में आती हैं
उदाहरण
इनपुट:
values = ["10", " 5 ", "abc", "-3"]
अपेक्षित आउटपुट:
expected = 12
इनपुट:
std::vector<std::string> values = {"10", " 5 ", "abc", "-3"};
अपेक्षित आउटपुट:
long long expected = 12;
इनपुट:
string[] values = new string[] {"10", " 5 ", "abc", "-3"};
अपेक्षित आउटपुट:
long expected = 12;
व्याख्या
"10", " 5 " (spaces को trim किया जाता है) और "-3" पूर्ण संख्याएँ हैं; "abc" छोड़ दिया जाता है। 10 + 5 - 3 = 12.
इनपुट:
values = ["2.5", "", "seven"]
अपेक्षित आउटपुट:
expected = 0
इनपुट:
std::vector<std::string> values = {"2.5", "", "seven"};
अपेक्षित आउटपुट:
long long expected = 0;
इनपुट:
string[] values = new string[] {"2.5", "", "seven"};
अपेक्षित आउटपुट:
long expected = 0;
व्याख्या
कोई भी entry पूर्ण संख्या नहीं है, इसलिए योग 0 है.
कैसे हल करें
पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।
संकेत 1
पहले स्पेस हटाएँ, फिर तय करें कि बचा हुआ हिस्सा सही पूर्णांक है या नहीं।
संकेत 2
try/except में बदलने से (या कैरेक्टर जाँचने से) आप बिना रुके गलत प्रविष्टियाँ छोड़ सकते हैं।
संकेत 3
अकेला चिह्न जैसे "+" संख्या नहीं है।
अपेक्षित जटिलता
समय O(कुल लंबाई), अतिरिक्त स्थान O(1)
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।