本题为字符串子串的经典范式,即如何在线性时间O(n)内找出一个字符串中不含重复字符的最长子串长度? 该问题本质是将暴力枚举,优化为以每个字符结尾的递推思想。

题目

image

字符位置记录使用数组(或哈希表)代替 Map

我们需要在遍历过程中,实时查询当前字符上一次出现的位置,这本质上是字符→最近下标的映射。既然这样我们就可以想到用数组或者哈希表来实现。

我们可以使用一个固定长度的数组替代更通用的哈希表,因为字符的 ASCII 范围是 0~255,数组可直接以字符的 ASCII 码为索引,实现 O(1) 的查询与更新,且常数极小。

第一步:初始化,