परिचय
इस ट्यूटोरियल में हम एक ऐसा प्रोग्राम लिखेंगे जो दी गई स्ट्रिंग में विशिष्ट (distinct) वर्ष ढूंढता है। आइए कुछ उदाहरण देखते हैं। हम मान रहे हैं कि दिनांक प्रारूप DD/MM/YYYY है।
इनपुट - नमूना उदाहरण दिनांकों के साथ 01/11/2020, 02/12/2020, और 03/10/2019।
आउटपुट - 2
दिए गए टेक्स्ट में हमारे पास दो विशिष्ट वर्ष हैं: 2020 और 2019।
हम दिए गए स्ट्रिंग से सभी दिनांकों को निकालने के लिए रेगेक्स (regex) का उपयोग करने जा रहे हैं। यदि आप C++ में रेगेक्स से परिचित नहीं हैं, तो इस ट्यूटोरियल को देखें।
समस्या समाधान के चरण
- टेक्स्ट को इनिशियलाइज़ करें।
- टेक्स्ट से दिनांक निकालने के लिए रेगेक्स लिखें।
- एक खाली अनऑर्डर्ड सेट इनिशियलाइज़ करें।
- दिनांकों पर पुनरावृत्ति करें और वर्ष को अनऑर्डर्ड सेट में जोड़ें ताकि अद्वितीय वर्ष मिलें।
- सेट की लंबाई प्रिंट करें।
उदाहरण कोड
#include <iostream>
#include <bits/stdc++.h>
#include <regex>
using namespace std;
int uniqueYearsCount(string text) {
// रेगेक्स
regex date_regex("[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}");
smatch matching_date;
// अद्वितीय दिनांकों को स्टोर करने के लिए सेट
unordered_set<string> 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
नोट
दिनांक विभिन्न प्रारूपों में हो सकते हैं। यदि आपको अलग प्रारूप में दिनांक मिलते हैं, तो रेगेक्स को उचित रूप से अपडेट करें।
निष्कर्ष
रेगेक्स और अनऑर्डर्ड सेट का उपयोग करके यह समाधान कुशलता से अद्वितीय वर्ष निकालता है। यदि आपके कोई प्रश्न हैं, तो कमेंट सेक्शन में पूछें।