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;
}    

  

 

原文地址:https://www.cnblogs.com/sheepcore/p/12525109.html