用C++拉丁字母表有26个字符,而电话只有数字输入板。 为了便于输入字母,我们做了一个对应关系。 例如,要输入B,程序要输入22.为了输入相同键上的不同字母,用户在输入之间要停顿一下。 空格' '用来指代停顿。 例如2 2代表AA,22代表B,输入第一行代表测试案例的数目N 下面N行,每行是一个字符串,对于每个测试案例,输出“Case #x: ",然后输出按键顺序
时间: 2024-04-20 16:27:13 浏览: 122
以下是一个 C++ 的实现,通过一个字符到数字的映射表,将每个字符转换为其对应的数字,并在相同按键的字符之间加入空格:
```cpp
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
string convert(const string& s) {
unordered_map<char, string> table = {
{'A', "2"}, {'B', "22"}, {'C', "222"},
{'D', "3"}, {'E', "33"}, {'F', "333"},
{'G', "4"}, {'H', "44"}, {'I', "444"},
{'J', "5"}, {'K', "55"}, {'L', "555"},
{'M', "6"}, {'N', "66"}, {'O', "666"},
{'P', "7"}, {'Q', "77"}, {'R', "777"}, {'S', "7777"},
{'T', "8"}, {'U', "88"}, {'V', "888"},
{'W', "9"}, {'X', "99"}, {'Y', "999"}, {'Z', "9999"}
};
string res;
for (char c : s) {
string code = table[c];
if (!res.empty() && res.back() == code[0]) { // 相同按键需要加空格
res += " ";
}
res += code;
}
return res;
}
int main() {
int n;
cin >> n;
cin.ignore(); // 忽略换行符
for (int i = 1; i <= n; i++) {
string s;
getline(cin, s);
string code = convert(s);
cout << "Case #" << i << ": " << code << endl;
}
return 0;
}
```
该程序读入测试案例的数目 N,然后依次读入每个测试案例的字符串,利用 `convert` 函数将每个字符转换为相应的数字,并在相同按键的字符之间加入空格。最后输出按键顺序。
阅读全文