DEMSO - Đếm số trong chuỗi

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift

Cho xâu ký tự ~s~ chỉ gồm các chữ cái latin và chữ số. Ta gọi một số trong xâu ~s~ là một dãy các ký tự số liên tiếp (có thể bắt đầu bằng ký tự số 0 ). Hãy đếm số lượng số xuất hiện trong xâu ~s~.

Input

  • Gồm một dòng duy nhất chứa xâu ~s~.

Giới hạn:

  • ~80\%~ số điểm có độ dài xâu s không quá ~1000~ ký tự;
  • ~20\%~ số điểm có độ dài xâu s không quá ~10^6~ ký tự.

Output

  • Một dòng duy nhất ghi số nguyên là số lượng số xuất hiện trong xâu ~s~.

Sample

Input #1
A0123b345
Output #1
2

Hint

Xét #1:

  • Các số xuất hiện trong xâu A0123b345 là ~0123~ và ~345~.

Problem source: Chuyên Sơn La Online Judge


Bình luận

Please read the guidelines before commenting.



  • 0
    quocchill2011  đã bình luận lúc 12, Tháng 2, 2026, 11:33 sửa 2

    Bài làm Python như sau

    ! Sử dụng module re

    import re
    s = input().strip()
    numbers = re.findall(r'\d+', s)
    print(len(numbers))
    

    ! ! Thế là xong bài


  • 1
    quocchill2011  đã bình luận lúc 12, Tháng 2, 2026, 11:16 sửa 2

    GỢI Ý TƯ DUY CHO CÁC BẠN:

    • Ta hiểu yêu cầu là: Đếm số “dòng chữ số” (chuỗi các chữ số liên tiếp) trong một xâu ký tự. (Ví dụ:"abc123x45z6" → có 3 dòng chữ số: 123, 45, 6)
    • Ta cần: Duyệt từng ký tự trong chuỗi. Khi gặp chữ số: Nếu trước đó không phải chữ số → bắt đầu một dòng mới → tăng biến đếm.
    • Khi gặp ký tự không phải số: Đánh dấu rằng ta đã ra khỏi dòng số.
    • Biến cần dùng : count → đếm số dòng chữ số,in_number → biến trạng thái (True/False); True: đang ở trong một dòng số, False: không ở trong dòng số

  • 0
    congtyluuthaibao1978  đã bình luận lúc 27, Tháng 11, 2025, 10:42

    include <bits/stdc++.h>

    using namespace std;

    int main() { ios::syncwithstdio(false); cin.tie(nullptr);

    string s;
    cin >> s;
    
    int cnt = 0;
    int n = s.size();
    
    for (int i = 0; i < n; i++) {
        if (isdigit(s[i]) && (i == 0 || !isdigit(s[i-1]))) {
            cnt++;
        }
    }
    
    cout << cnt;
    return 0;
    

    }