Tất cả thử thách
Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Cộng các số hợp lệ

Cộng các mục là số nguyên và bỏ qua mọi thứ khác, theo cách try/except xử lý dữ liệu đầu vào lỗi.

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

  • Bỏ qua dữ liệu sai thay vì làm chương trình lỗi
  • Cắt khoảng trắng trước khi đổi chuỗi sang số
  • Nhận biết dấu tùy chọn theo sau là các chữ số

Đề bài

Xem bản gốc (English)

Dữ liệu do con người nhập vào thường lộn xộn. Bạn nhận một danh sách các chuỗi và phải cộng các chuỗi là số nguyên, bỏ qua phần còn lại thay vì làm chương trình bị lỗi.

Một mục được tính nếu, sau khi bỏ khoảng trắng ở cả hai đầu, nó là một dấu + hoặc - tùy chọn theo sau bởi một hoặc nhiều chữ số. Mọi thứ khác (chuỗi rỗng, số thập phân như "2.5", từ ngữ) đều bị bỏ qua.

Implement sum_valid_numbers(values).

Đầu vào

values: Các mục cần đọc.

Đầu ra

Trả về tổng các số nguyên hợp lệ (0 nếu không có số nào).

Ràng buộc

0 ≤ số mục ≤ 1,000

Mỗi mục có tối đa 20 ký tự; số hợp lệ vừa với số nguyên 64-bit

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 " (đã bỏ khoảng trắng) và "-3" là số nguyên; "abc" bị bỏ qua. 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

Không mục nào là số nguyên nên tổng bằng 0.

Hướng tiếp cận

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

Gợi ý 1

Bỏ khoảng trắng trước, rồi xét phần còn lại có phải số nguyên hợp lệ không.

Gợi ý 2

Đổi kiểu trong try/except (hoặc kiểm tra từng ký tự) giúp bỏ qua mục sai mà không dừng chương trình.

Gợi ý 3

Một dấu đứng riêng như "+" không phải là số.

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

thời gian O(tổng độ dài), bộ nhớ phụ O(1)

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.