Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm số năm khác nhau trong chuỗi (định dạng DD-MM-YYYY) bằng C++

Cho chuỗi chứa các ngày tháng dạng 'DD-MM-YYYY'. Đếm số năm khác nhau xuất hiện.

Ví dụ

Input: "I was born on 22-12-1955. My sister was born on 34-06-2003 and my mother on 23-03-1940."

Output: 3 (1955, 2003, 1940)

Thuật toán

  • Duyệt chuỗi, tích lũy chữ số vào buffer.
  • Gặp '-' → clear buffer.
  • Buffer dài 4 → là năm, thêm vào unordered_set.

Code C++

#include <bits/stdc++.h>
using namespace std;

int countDistinctYears(string s) {
    unordered_set<string> years;
    string buf;
    for (char c : s) {
        if (isdigit(c)) buf.push_back(c);
        else if (c == '-') buf.clear();
        if (buf.size() == 4) {
            years.insert(buf);
            buf.clear();
        }
    }
    return years.size();
}

int main() {
    string str = "I was born on 22-12-1955. My sister was born on 34-06-2003 and my mother on 23-03-1940.";
    cout << countDistinctYears(str); // 3
    return 0;
}

Kết quả

3

Lưu ý: Giả định năm luôn là 4 chữ số cuối cùng trước phân cách không phải chữ số.