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

Tìm tổng số năm khác biệt từ một chuỗi trong chương trình C++


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.