c# - CTCI 字符串压缩算法替代方法
问题描述
我觉得问题 1.6 的 CTCI 书中的问题被过度设计了。我认为它可以以更易读的方式使用相同的常量空间,如下所示。请评论
private static string CompressStringDict(string input)
{
Dictionary<char, int> chars = new Dictionary<char, int>();
StringBuilder output = new StringBuilder();
for(int i = 0; i < input.Length; i++)
{
if (chars.ContainsKey(input[i]))
chars[input[i]] = ++chars[input[i]];
else
{
if(chars.Count>0)
{
output.Append(chars.First().Key + chars.First().Value.ToString());
chars.Clear();
}
chars.Add(input[i], 1);
}
}
output.Append(chars.First().Key + chars.First().Value.ToString());
chars.Clear();
return output.Length >= input.Length ? input : output.ToString();
}
我正在使用 C# & Dictionary 可以替换为简单的Tuple
或KeyValuePair
. 就运行时复杂性而言,差异不大,但这更具可读性和直接性。你认为我在朝着正确的方向前进吗?
解决方案
推荐阅读
- javascript - document.querySelectorAll 返回一些空白的元素,如何获取所有控件?
- python-3.x - 尝试在迁移学习中生成数据时出现张量流图错误
- python - db2 列表应用程序输出中的自定义 python 应用程序名称
- ms-access - MS Access 第二个自动编号字段选项或解决方法
- python - input() 函数从字面上接收条目,而不是制作一个列表
- java - java检索lnk文件参数和目标
- r - 出了点问题;缺少所有 Rsquared 度量值 - 插入符号时间片
- asp.net - MVC - FormsAuthentication 获取 RoleName
- laravel - laravel 中的会话
- c# - 如何通过 POST 将原始数据发送到 WebApi