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

นับ Distinct Years จาก String รูปแบบ DD-MM-YYYY ใน C++


โจทย์: กำหนด 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

  1. สแกน string ทีละตัวอักษร
  2. 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