题目略。当时并不会做,思路大致就是和官方解答中的方法一类似,时间复杂度n3。
查看了方法三之后,豁然开朗,这里简单介绍一下思路。
核心思想大概是这样的:设开始计算无重复字符串的起点字符为位置i,设当前所读的字符为位置j;若从位置i至位置j的字符串中,存在有与位置j的字符相同的字符,位置设为位置k,则将j-i作为max值,并将位置i更新至位置k+1。之后继续从位置j开始读取字符。重复该过程。max即为最长无重复字符串的长度。
在该过程中,直接排除了包含两个或多个相同字符的字符串,所以速度会大大提升。当然和hashmap也有很大的关系。