题目:
题解:
- 起初在打比赛的时候用map写的,太傻了,比赛完了看了别人的代码才恍然大悟,原来可以直接用字符相加就好了。
- 注意点:对于两位数字转换为字母时,我们需要将其转换为数字后,再进行
'a'
的移位;对于一位数字转换为字母时,我们直接将s[i]-'1’转换为数字,然后进行'a'
的移位。
代码如下:
class Solution {
public:
string freqAlphabets(string s) {
string res;
int i=0,n=s.size();
while(i<n)
{
if(i+2<n&&s[i+2]=='#'){//注意将两位数字转换为整数后,再进行a的移位
res.push_back('a'+stoi(s.substr(i,2))-1);
i+=3;
}
else{//1-9的字符移动0-8位,对应的字母范围位a-i
res.push_back('a'+s[i]-'1');
i++;
}
}
return res;
}
};