LeetCode 第三题 (Longest Substring Without Repeating Characters) 三部曲之二:编码实现
欢迎访问我的 GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
本文是《LeetCode 第三题(Longest Substring Without Repeating Characters)三部曲》的第二篇,前一篇文章已经列出了完整的解题思路,今天来将此思路转化为具体的 Java 代码;
关键变量
编码之前先确定几个关键变量:
当前窗口中的元素都是不重复的,适合用一个 HashSet 来保存;
max 变量记录最长子串的长度;
left 表示窗口左侧相对整个字符串的位置,right 表示窗口右侧相对整个字符串的位置,如下图:
代码实现
以下是代码,关键位置都有详细注释:
复制代码
上述代码的关键是 set.remove(s.charAt(left++)),配合着外面的 while 循环,"left++"表示将窗口向右移动一个元素,并且将窗口中最左侧的元素从 set 中删除;
上述代码在 LeetCode 上提交成功,不过运行时间超过 40ms,成绩并不理想,接下来的文章我们一起来做优化提升速度;
欢迎关注 InfoQ:程序员欣宸
版权声明: 本文为 InfoQ 作者【程序员欣宸】的原创文章。
原文链接:【http://xie.infoq.cn/article/a71a232078c3c1bea36dedc1b】。文章转载请联系作者。
评论