# Hash Table# String# Lookup

l960 - 星期幾?

🔗 前往 ZeroJudge 原題

題目描述

題目要求將英文的星期幾名稱轉換為對應的數字,Sunday 為 0,Monday 為 1,依此類推,Saturday 為 6。如果輸入的字串不是有效的星期幾名稱,則輸出 "error"。

解題思路

此題的解題思路是使用一個 Hash Table (std::map) 來儲存星期幾名稱和對應數字的映射關係。程式首先建立一個包含所有有效星期幾名稱及其數字的 map。然後,程式讀取輸入字串,並在 map 中查找該字串。如果找到,則輸出對應的數字;否則,輸出 "error"。

複雜度分析

  • 時間複雜度: O(1)
  • 空間複雜度: O(1)

程式碼

#include <iostream>
#include <map>
#include <string>

int main() {
    std::map<std::string, int> days = {
        {"Sunday", 0},
        {"Monday", 1},
        {"Tuesday", 2},
        {"Wednesday", 3},
        {"Thursday", 4},
        {"Friday", 5},
        {"Saturday", 6}
    };

    std::string input;
    std::getline(std::cin, input);

    if (days.count(input)) {
        std::cout << days[input] << '\n';
    } else {
        std::cout << "error" << '\n';
    }

    return 0;
}

Discussion