题目:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。本篇经验将分享一下“双指针+集合”搜索算法以及“双指针+哈希表”搜索算法,前者时间复杂度为 O(2n),后者可改善为 O(n)。
实现 “双指针+集合”搜索算法 ,该算法声明两个索引,快索引向前遍历,并将字符加入到集合中,如果出现重复字符,则慢索引向前遍历,并从集合中逐个删除字符直到没有重复字符,并计算最大无重复字符串的长度。
本地测试 “双指针+集合”搜索算法, 输出符合预期,测试通过。
平台提交 “双指针+集合”搜索算法 ,测试通过。
实现 “双指针+哈希表”搜索算法 ,该算法声明两个索引,快索引向前遍历,并将字符加入到一个哈希表中,如果出现重复字符,直接从哈希表中获取重复字符的位置,将慢索引直接移动到该位置的后一个位置上,并计算最大长度。
本地测试 “双指针+哈希表”搜索算法 ,输出符合预期,测试通过。
平台提交 “双指针+哈希表”搜索算法 ,测试通过。