Click
Here to go back to the homepage.
T9 Spelling Solution:
#include <bits/stdc++.h>
using namespace std;
string translate(string s){
string result("");
char lookup[9] = {'2', '3', '4', '5', '6'};
char c;
char lastnum = 0;
for(char c: s){
char character;
if(c == ' '){
character = '0';
if(lastnum == character){
result.push_back(' ');
}
result.push_back(character);
lastnum = character;
} else {
c -= 'a';
if(c <= 14){
int nums = c % 3 + 1;
int index = c / 3;
character = lookup[index];
if(lastnum == character){
result.push_back(' ');
}
lastnum = character;
while(nums--){
result.push_back(character);
}
} else {
c -= 14;
if(c <= 4){
character = '7';
if(lastnum == character){
result.push_back(' ');
}
lastnum = character;
while(c--){
result.push_back(character);
}
} else {
if(c <= 7){
character = '8';
if(lastnum == character){
result.push_back(' ');
}
lastnum = character;
for(int i = 4; i < c; i++){
result.push_back(character);
}
} else {
character = '9';
if(lastnum == character){
result.push_back(' ');
}
lastnum = character;
for(int i = 7; i < c; i++){
result.push_back(character);
}
}
}
}
}
}
return result;
}
int main(){
// #ifndef TESTING
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
// #endif
string line;
getline(cin, line);
int nCases = stoi(line);
for(int i = 1; i <= nCases; i++){
string line;
getline(cin, line);
cout << "Case #" << i << ": " << translate(line) << endl;
}
return 0;
}