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的时间了
本文介绍了一种使用哈希表解决LeetCode新题的方法,通过将输入字符串中的字符映射到哈希表中对应的StringBuilder对象,实现了对字符串的定制排序。

286

被折叠的 条评论
为什么被折叠?



