Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาจำนวนปีที่แตกต่างจากสตริงในโปรแกรม C++


ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่ค้นหาปีที่แตกต่างกันในสตริงที่กำหนด มาดูตัวอย่างกัน เราถือว่ารูปแบบวันที่เป็น วว/ดด/ปปปป .

ป้อนข้อมูล − ตัวอย่างที่มีวันที่ 01/11/2020, 02/12/2020 และ 03/10/2019

ผลผลิต − 2

เรามีเวลาสองปีที่แตกต่างกันในข้อความที่กำหนดในปี 2020 และ 2019

เราจะใช้ regex เพื่อแยกวันที่ทั้งหมดออกจากสตริงที่กำหนด หากคุณไม่คุ้นเคยกับ regex ใน C++ โปรดอ่านบทช่วยสอนนี้

มาแก้ปัญหากันเถอะ

  • เริ่มต้นข้อความ

  • เขียน regex เพื่อดึงวันที่ออกจากข้อความ

  • เริ่มต้นชุดที่ไม่มีลำดับที่ว่างเปล่า

  • วนซ้ำวันที่และเพิ่มปีในชุดที่ไม่เรียงลำดับเพื่อค้นหาปีที่ไม่ซ้ำกัน

  • พิมพ์ความยาวของชุด

ตัวอย่าง

มาดูโค้ดกันเลย

#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

เราสามารถรับวันที่ในรูปแบบต่างๆ หากคุณได้รับวันที่ในรูปแบบต่างๆ ให้อัปเดต regex อย่างเหมาะสม

บทสรุป

หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น