Điểm:
300 (p)
Thời gian:
1.0s
Bộ nhớ:
640M
Input:
bàn phím
Output:
màn hình
Cho một xâu \(S\) có độ dài không quá 255 kí tự. Trong xâu \(S\), có chứa các số nguyên mà
mỗi số nguyên đó là một xâu con gồm các kí tự số liên tiếp nhau trong xâu \(S\).
Yêu cầu: Hãy tìm số nguyên lớn nhất có trong xâu \(S\).
Input
- Có một dòng duy nhất là xâu \(S\) có độ dài không quá 255 kí tự.
Output
- Ghi ra một số nguyên lớn nhất có trong xâu \(S\)
(Lưu ý: Phải loại bỏ các chữ số 0 vô nghĩa bên trái của kết quả).
Scoring
- Subtask \(1\) (\(70\%\) số điểm): \(|S|\le 255\) theo đề chuẩn
- Subtask \(2\) (\(30\%\) số điểm): \(|S|\le 10^{6}\) mở rộng
Example
Test 1
Input
Abc987hnmh0003456hs006543m
Output
6543
Bình luận
Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.
Python nhanh trí dùng thư viện re :))
ez quá
code nè
mất 7749 đấm
Sau 7749 lần submit và debug thì cuối cùng mình cũng đã AC bài này và xin chia sẻ lời giải bài này như sau:
Mình sẽ chia lời giải này thành 2 phần:
Phần 1. Giải subtask 1 (đúng 10/13 test)
Với trường hợp 1, ta sẽ duyệt từ đầu đến cuối xâu, nếu ký tự đang xét là chữ số thì cộng chữ số này vào đáp án theo công thức
res = 10*res + (s[i] - '0')
.Ta sẽ lặp lại công thức trên cho đến khi ký tự đang xét không còn là chữ số nữa thì ta sẽ cộng biến
res
vào mảng số nguyên, khởi tạo lạires = 0
.Với trường hợp 2, thì ta cần cần xét: nếu ký tự hiện tại đang xét là chữ số và ký tự phía trước là dấu trừ (
-
) thì vẫn sử dụng công thức ở trên, nhưng thay dấu cộng bằng dấu trừ.Rồi làm y hệt như trường hợp 1.
Với trường hợp 3, ta sử dụng hàm kiểm tra 1 xâu có phải xâu số hay không (tham khảo của mình):
Nếu nó là xâu số thì không cần phải xét gì nữa, in ra nó luôn (bạn cũng hiểu tại sao mà)
Phần 2. Giải subtask 2 (Accepted)
Theo đề mở rộng thì \(|S| \le 10^6\) nên có thể số nguyên lớn nhất có thể vượt quá
long long
nên dùngstring
để thao tác.Trước hết ta cần viết một hàm so sánh giữa 2 xâu.
Hàm này của mình đã vẽ ra cho cả 3 trường hợp đã nêu ở phần 1:
Giải thích 1 chút về hàm của mình:
Ta cũng chia subtask 2 này thành 3 trường hợp như subtask 1:
-
thì ta xét tiếp: nếures
rỗng và ký tự đang xét là số0
thì bỏ qua, ngược lại chèn ký tự đang xét vào phía saures
.res
khác rỗng thì lấy max củares
vàans
(ans
ở đây là biến lưu kết quả để in ra màn hình), reset lạires
.Code tham khảo cho subtask 1: Đây
Code tham khảo cho subtask 2: Đây
P/s: Upvote hoặc tôi sẽ dẫn bạn đến Gulag