Files
exercises/pojcs101_M01002_memorable_number.cpp
T
2026-07-28 00:33:27 +08:00

58 lines
1.5 KiB
C++

#include <iostream>
#include <map>
std::map<char, int> charMap;
void initMap() {
charMap = {{'0', 0}, {'1', 1}};
for (char c: "ABCabc2") { charMap[c] = 2; }
for (char c: "DEFdef3") { charMap[c] = 3; }
for (char c: "GHIghi4") { charMap[c] = 4; }
for (char c: "JKLjkl5") { charMap[c] = 5; }
for (char c: "MNOmno6") { charMap[c] = 6; }
for (char c: "PQRSpqrs7") { charMap[c] = 7; }
for (char c: "TUVtuv8") { charMap[c] = 8; }
for (char c: "WXYZwxyz9") { charMap[c] = 9; }
}
void runDataset() {
int stringCount;
std::map<std::string, int> duplicatedCounts;
std::cin >> stringCount;
for (int _ = 0; _ < stringCount; _++) {
std::string str;
// int currentNumber = 0;
std::string currentNumber;
std::cin >> str;
for (char c: str) {
if (c == '-') { continue; }
currentNumber += static_cast<char>(charMap[c] + '0');
}
duplicatedCounts[currentNumber]++;
}
bool noDuplicate = true;
for (const auto &[number, count]: duplicatedCounts) {
if (count > 1) {
noDuplicate = false;
std::cout << number.substr(0, 3) << "-" << number.substr(3) << " " << count << std::endl;
}
}
if (noDuplicate) {
std::cout << "No duplicates." << std::endl;
}
}
int main() {
initMap();
// int datasetCount;
// std::cin >> datasetCount;
// for (int _ = 0; _ < datasetCount; _++) {
// runDataset();
// }
runDataset();
return 0;
}