LeetCode的新题,很容易想到双重嵌套循环,这是另一种利用哈希表的解法
public string CustomSortString(string S,string T)
{
Dictionary<char, StringBuilder> DS = new Dictionary<char, StringBuilder>();
StringBuilder SB = new StringBuilder();
foreach(char c in S)
{
DS.Add(c, new StringBuilder());
}
DS.Add('0', new StringBuilder());
foreach(char c in T)
{
if (DS.ContainsKey(c))
DS[c] = DS[c].Append(c);
else
DS['0'] = DS['0'].Append(c);
}
foreach (StringBuilder sb in DS.Values)
{
SB.Append(sb.ToString());
}
return SB.ToString();
}
比双重嵌套的写法慢了一点点,担心关系到大量字符串操作,所以用了stringbuilder,似乎是多虑了?如果输入字符足够长,大概能快一些
可惜C#不支持一键多值的哈希链表,不然就能省下实例化stringbuilder的时间了