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