leetcode 3. 无重复字符的最长子串
题目链接 思路一:前置指针 分析:最长子串肯定是出现在某个字符与该字符上一次出现的位置中间这一段。 我们用一个数组来记录每个字符上一次出现的位置,那么以这个字符结尾最长肯定是在它上一次出现的位置的后面一个位置到当前位置。 并且这个题目里面的字符串都是ASSIC码表中的字符,我们用一个长度为128的数组last表示。 last[i]=x:表示的是在ASSIC表中十进制是i的字符上一次在s中出现的下标是x。 举例:“abcabcbb” i=0 last[‘a’]=0; 此时的前置指针默认为-1,因为前面没有a
i=1 last[‘b’]=1 此时的前置指针默认为-1,因为前面没有b
i=2 last[‘c’]=2 此时的前置指针默认为-1,因为前面没有c
i=3 此时前置指针lastIndex=last[‘a’],也就是说lastIndex=0,当前元素下标为3,那么此时的最长就是[1,3],也就是3-1+1=
共有 0 条评论