此题有多种解法,但是每种解法的效率不尽相同。
看到题目首先想到的是:取出字符串的所有子串,滤掉有重复子字符的子串,取剩下的最长子串的长度,但是此解法的时间复杂度为O(n2).
优化算法思路:扫描的时候记录起点位置first,将字符作为key,位置作为value存入字典,如果遇到重复字符,从字典中找出当前字符第一次出现的位置,将first更新为该字符的位置+1,这样保证first到当前扫描字符没有重复字符。同时判断每一段无重复字符串的长度并更新。此解法的时间复杂度为O(n)。
此题有多种解法,但是每种解法的效率不尽相同。
看到题目首先想到的是:取出字符串的所有子串,滤掉有重复子字符的子串,取剩下的最长子串的长度,但是此解法的时间复杂度为O(n2).
优化算法思路:扫描的时候记录起点位置first,将字符作为key,位置作为value存入字典,如果遇到重复字符,从字典中找出当前字符第一次出现的位置,将first更新为该字符的位置+1,这样保证first到当前扫描字符没有重复字符。同时判断每一段无重复字符串的长度并更新。此解法的时间复杂度为O(n)。