创建一个字典,把s中的字符全部放进去,然后根据order的顺序取出字典中的字符。最后再把剩下的字符加到结果中去。
一开始光想着要优化在字典中寻找字符的时间,一上来就想到了使用unordered_map,忘记了最简单也是最快的数组
class Solution {
public:
string customSortString(string order, string s) {
int dir[26] = {0};
for(int i = 0; i < s.size(); ++i)
{
dir[s[i] - 'a']++;
}
string res = "";
for(int i = 0; i < order.size(); ++i)
{
while(dir[order[i] - 'a'] > 0)
{
res += order[i];
dir[order[i] - 'a']--;
}
}
for(int i = 0; i < 26; i++)
{
while(dir[i] > 0)
{
res += char(i + 'a');
dir[i]--;
}
}
return res;
}
};