Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Sum the Valid Numbers

Add up the entries that are whole numbers and skip everything else, the way try/except handles bad input.

Bạn sẽ học được gì

  • Skip invalid input instead of crashing
  • Trim spaces before converting text to a number
  • Recognise an optional sign followed by digits

Đề bài

Xem bản dịch

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).

Ràng buộc

0 ≤ number of entries ≤ 1,000

Each entry has at most 20 characters; valid numbers fit in a 64-bit integer

Ví dụ

Ví dụ 1
Đầu vào:
values = ["10", " 5 ", "abc", "-3"]

Kết quả mong đợi:
expected = 12
Đầu vào:
std::vector<std::string> values = {"10", " 5 ", "abc", "-3"};

Kết quả mong đợi:
long long expected = 12;
Đầu vào:
string[] values = new string[] {"10", " 5 ", "abc", "-3"};

Kết quả mong đợi:
long expected = 12;

Giải thích

"10", " 5 " (spaces are trimmed) and "-3" are whole numbers; "abc" is skipped. 10 + 5 - 3 = 12.

Ví dụ 2
Đầu vào:
values = ["2.5", "", "seven"]

Kết quả mong đợi:
expected = 0
Đầu vào:
std::vector<std::string> values = {"2.5", "", "seven"};

Kết quả mong đợi:
long long expected = 0;
Đầu vào:
string[] values = new string[] {"2.5", "", "seven"};

Kết quả mong đợi:
long expected = 0;

Giải thích

None of the entries is a whole number, so the sum is 0.

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Strip the spaces first, then decide whether what is left is a valid whole number.

Gợi ý 2

Converting inside try/except (or checking the characters) lets you skip bad entries without stopping.

Gợi ý 3

Remember that a lone sign such as "+" is not a number.

Độ phức tạp mong đợi

O(total length) time, O(1) extra space

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.