Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++ 프로그램의 문자열에서 총 고유 연도 찾기

<시간/>

이 자습서에서는 주어진 문자열에서 고유한 연도를 찾는 프로그램을 작성할 것입니다. 몇 가지 예를 살펴보겠습니다. 날짜 형식이 DD/MM/YYYY라고 가정합니다. .

입력 − 날짜가 2020년 1월 11일, 2020년 2월 12일, 2019년 3월 10일인 샘플 예

출력 - 2

주어진 텍스트에 2020년과 2019년이 따로 있습니다.

우리는 정규식을 사용하여 주어진 문자열에서 모든 날짜를 추출할 것입니다. C++의 정규식에 익숙하지 않다면 이 튜토리얼을 진행하세요.

문제 해결에 뛰어들자.

  • 텍스트를 초기화합니다.

  • 텍스트에서 날짜를 추출하는 정규식을 작성하십시오.

  • 정렬되지 않은 빈 집합을 초기화합니다.

  • 날짜를 반복하고 순서가 지정되지 않은 집합에 연도를 추가하여 고유한 연도를 찾습니다.

  • 세트의 길이를 인쇄하십시오.

예시

코드를 봅시다.

#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 to store unique dates
   unordered_set<string> dates;
   // finding all dates
   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;
}

출력

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

2

다른 형식으로 날짜를 가져올 수 있습니다. 날짜 형식이 다른 경우 정규식을 적절하게 업데이트하십시오.

결론

튜토리얼에서 질문이 있는 경우 댓글 섹션에 언급하세요.