笔者在完成LeetCode第三题(Longest Substring Without Repeating Characters)时,经历了设计、实现、优化三个阶段,于是通过这个三部曲系列,将当初的整个过程重现,希望有兴趣的读者来一起讨论;
先来看下优化后的最终效果,如下图,编程语言是Java,17毫秒完成,超越99.94%的提交方案:
上述成绩的地址是:https://leetcode.com/submissions/detail/199426736/
整个系列由三篇文章组成:
第一篇,也就是本文,描述基本解题思路;
第二篇,根据解题思路完成初版的代码实现,目标是保证功能正常,能在LeetCode网站提交成功;
第三篇,针对初版代码做了两轮优化,每轮都有一个优化的重点,最终将耗时从40ms以上优化到17ms;
以前面的"abcabcbb"为例,来把上述逻辑用图片演示一遍;
以上就是解题思路,用代码来实现整个思路并不难,下一篇文章我们来看下基本的代码实现;