时/空限制:1s / 64MB
题解 :
- 将每一个键对应的字符分别作为一个字符串,然后枚举就可以得到每一个字符对应在哪一个键的第几个位置,
map<char, pair<int, int>>
#include <iostream>
#include <unordered_map>
using namespace std;
typedef pair<int, int> PII;
string str[] = {"abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
int main() {
unordered_map<char, PII> ma;
for (int i = 0; i < 8; ++ i) {
for (int j = 0; j < str[i].size(); ++ j) {
ma[str[i][j]] = {i, j + 1};
}
}
string s;
while (cin >> s) {
int ans = ma[s[0]].second;
int n = (int)s.size();
for (int i = 1; i < n; ++ i) {
ans += ma[s[i]].second;
if (ma[s[i - 1]].first == ma[s[i]].first) ans += 2;
}
cout << ans << endl;
}
}