โจทย์: กำหนด string ที่มี dates ในรูปแบบ DD-MM-YYYY หาจำนวนปี (year) ที่ distinct
ตัวอย่าง: "I was born on 22-12-1955. My sister was born on 34-06-2003 and my mother on 23-03-1940." → 3 years (1955, 2003, 1940)
อัลกอริธึม: Scan + Extract 4-digit numbers หลัง hyphen ที่ 2
- สแกน string ทีละตัวอักษร 2. สะสม digits ติดกัน 3. เมื่อเจอ '-' → clear buffer 4. เมื่อ buffer ยาว 4 → เป็น year → insert into set
ตัวอย่างโค้ด C++
#include <bits/stdc++.h>
using namespace std;
int calculateDifferentYears(string str) {
unordered_set<string> differentYears;
string buffer = "";
for (char c : str) {
if (isdigit(c)) buffer.push_back(c);
if (c == '-') buffer.clear();
if (buffer.length() == 4) {
differentYears.insert(buffer);
buffer.clear();
}
}
return differentYears.size();
}
int main() {
string sentence = "I was born on 22-12-1955. My sister was born on 34-06-2003 and my mother on 23-03-1940.";
cout << calculateDifferentYears(sentence);
}
อินพุต
"I was born on 22-12-1955. My sister was born on 34-06-2003 and my mother on 23-03-1940."
เอาต์พุท
3
Complexity
- Time: O(L) L = ความยาว string
- Space: O(Y) Y = จำนวน distinct years