转换规则:
abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9
大写字母则变成小写之后往后移一位
数字不变
#include <string>
#include <iostream>
#include <stdio.h>
#include <vector>
#include <assert.h>
using namespace std;
// YUANzhi1987 -> zvbo9441987
int main() {
string s;
cin >> s;
vector<char> ret;
for(int i=0; i<s.length(); i++) {
if(s[i]>='A' && s[i]<='Z') {
char ch = tolower(s[i]) + 1;
// printf("%c", ch);
if(s[i]=='Z')
ret.push_back('a');
else
ret.push_back(ch);
} else if(s[i]>='0' && s[i]<='9') {
ret.push_back(s[i]);
}
else {
switch (s[i]) {
case 'a':
case 'b':
case 'c':
ret.push_back('2');
break;
case 'd':
case 'e':
case 'f':
ret.push_back('3');
break;
case 'g':
case 'h':
case 'i':
ret.push_back('4');
break;
case 'j':
case 'k':
case 'l':
ret.push_back('5');
break;
case 'm':
case 'n':
case 'o':
ret.push_back('6');
break;
case 'p':
case 'q':
case 'r':
case 's':
ret.push_back('7');
break;
case 't':
case 'u':
case 'v':
ret.push_back('8');
break;
case 'w':
case 'x':
case 'y':
case 'z':
ret.push_back('9');
break;
}
}
}
assert(!ret.empty());
assert(s.length()== ret.size());
// printf("%d", ret.size());
for(int i=0; i<ret.size(); i++)
printf("%c", ret[i]);
}