समस्या
Data typed by people is messy. You get a list of strings and must add up the ones that are whole numbers, ignoring the rest instead of crashing.
An entry counts if, after removing spaces at both ends, it is an optional + or - sign followed by one or more digits. Anything else (empty text, decimals such as "2.5", words) is skipped.
Implement sum_valid_numbers(values).
Input
values: The entries to read.
Output
Return the sum of the valid whole numbers (0 if there are none).
सीमाएँ
0 ≤ number of entries ≤ 1,000
Each entry has at most 20 characters; valid numbers fit in a 64-bit integer
उदाहरण
इनपुट:
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 are trimmed) and "-3" are whole numbers; "abc" is skipped. 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;
व्याख्या
None of the entries is a whole number, so the sum is 0.
कैसे हल करें
पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।
संकेत 1
Strip the spaces first, then decide whether what is left is a valid whole number.
संकेत 2
Converting inside try/except (or checking the characters) lets you skip bad entries without stopping.
संकेत 3
Remember that a lone sign such as "+" is not a number.
अपेक्षित जटिलता
O(total length) time, O(1) extra space
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।