#include <bits/stdc++.h>
using namespace std;
int main() {
string S, key;
int t = 1;
map<string, string> country{ // 先建一個6個國家的對照表
{"HELLO", "ENGLISH"},
{"HOLA", "SPANISH"},
{"HALLO", "GERMAN"},
{"BONJOUR", "FRENCH"},
{"CIAO", "ITALIAN"},
{"ZDRAVSTVUJTE", "RUSSIAN"}
};
while(cin >> S && S != "#"){
cout << "Case " << t << ": ";
// 利用 map 中的 find 查看是否有對應的 key (country.end() 是沒有對應 key)
cout << ((country.find(S) != country.end()) ? country[S] : "UNKNOWN") << endl;
t++; // 紀錄是 case 幾
}
return 0;
}
補充一下,如果map已經會了,也可以來練unordered_map喔
| 特性 | map | unordered_map |
|---|---|---|
| 底層實作 | 平衡二元搜尋樹(通常是紅黑樹) | Hash Table(雜湊表) |
| 元素順序 | key 有序(從小到大) | key 無序(插入順序不保證) |
| 查找/插入/刪除時間複雜度 | O(log n) | 平均 O(1),最壞 O(n) |
| 記憶體使用 | 較低 | 較高 |
| 迭代順序 | 遞增順序 | 任意順序(不保證) |
支援 .count(key) / .find(key) | 有 | 有 |
#include<iostream>
#include<unordered_map>
using namespace std;
int main() {
ios::sync_with_stdio(0);cin.tie(0);
unordered_map<string,string> umap{
{"HELLO" , "ENGLISH"},
{"HOLA" , "SPANISH"},
{"HALLO" , "GERMAN"},
{"BONJOUR" , "FRENCH"},
{"CIAO" , "ITALIAN"},
{"ZDRAVSTVUJTE" , "RUSSIAN"}
};
string s;
int t=1;
while(cin >> s and s!="#"){
cout << "Case " << t << ": ";
//.count()可用來查找kay是否存在,若存在傳回1,反之傳回0
if(umap.count(s))cout << umap[s] << "\n";
else cout << "UNKNOWN\n";
t++;
}
}
btw 版主好像寫了一個string key;但沒有用到耶
有錯歡迎指教