1. Description
将一个只含有数字0~9和#的字符串按规则转换:
1. '1' ~ '9' -> 'a' ~ 'i';
2. "10#" ~ "26#" -> 'j' ~ 'z'
返回最后字符串res。
2. Solution
顺序扫描字符,每次往后多看两个字符(如果可以的话),判断字符所在范围,利用stoi()进行字符到数字转换。
3. Code
string freqAlphabets(string s) { string res = ""; for (int i = 0; i < s.size(); i++) { if ((i + 2) >= s.size()) //如果不能往后多看2个字符,则一定是'a' ~ 'i'之间 res += string(1, stoi(s.substr(i, 1)) - 1 + 'a'); else { if (s[i + 2] == '#') { //往后加2看字符是否有'#',则判断字符在'j' ~ 'z'之间 res += string(1, stoi(s.substr(i, 2)) - 1 + 'a'); i += 2; //注意这里需要走两步 } else res += string(1, stoi(s.substr(i, 1)) - 1 + 'a'); } } return res; }