LeetCode-1309 Decrypt String from Alphabet to Integer Mapping
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;
}

浙公网安备 33010602011771号