首页 > 解决方案 > 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 可以替换为简单的TupleKeyValuePair. 就运行时复杂性而言,差异不大,但这更具可读性和直接性。你认为我在朝着正确的方向前进吗?

标签: c#algorithm

解决方案


推荐阅读