Trong hướng dẫn này, ta sẽ viết chương trình tìm các năm khác biệt trong chuỗi cho trước. Hãy xem một số ví dụ. Ta giả định định dạng ngày là DD/MM/YYYY.
Đầu vào − Ví dụ mẫu với các ngày 01/11/2020, 02/12/2020, và 03/10/2019.
Đầu ra − 2
Ta có hai năm khác biệt trong văn bản: 2020 và 2019.
Ta sẽ dùng regex để trích xuất tất cả ngày từ chuỗi. Nếu bạn chưa quen regex trong C++, hãy tham khảo hướng dẫn khác.
Hãy bắt đầu giải quyết.
- Khởi tạo văn bản.
- Viết regex trích xuất ngày từ văn bản.
- Khởi tạo unordered_set rỗng.
- Duyệt các ngày tìm được, thêm năm vào set để tìm năm duy nhất.
- In kích thước set.
Ví dụ
Xem mã dưới đây:
#include <iostream> #include <bits/stdc++.h> #include <regex> using namespace std; int uniqueYearsCount(string text) { // regex regex date_regex("[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}"); smatch matching_date; // set lưu năm duy nhất unordered_set<string> dates; // tìm tất cả ngày while (regex_search(text, matching_date, date_regex)) { string date = matching_date[0]; dates.insert(date.substr(date.size() - 4)); text = matching_date.suffix(); } return dates.size(); } int main() { string text = "Sample example with dates 01/11/2020, 02/12/2020, and 03/10/2019."; cout << uniqueYearsCount(text) << endl; return 0; }
Đầu ra
Nếu chạy mã trên, bạn sẽ nhận được kết quả sau:
2
Có thể gặp ngày với định dạng khác. Nếu vậy, hãy cập nhật regex cho phù hợp.
Kết luận
Nếu bạn có thắc mắc, hãy đề cập trong phần bình luận.