坚持按题型打卡&刷&梳理力扣算法题系列,语言为go,Day7 无重复字符的最长子串 题目描述解题思路 不含重复字符——》考虑使用哈希表来存储记录为了提高效率也可以用数组,hash := [128]bool{} (因为存的是字符的ASCLL码,所以开128大小即可),布尔值用于存储当前右端点是否重复核心思想:遍历右端点,固定右端点,滑动左端点,保证左边绝对没有跟右端点重复的字符(即以右端点为准),有的话就滑动左端点去重复总的来说,右端点负责扩张长度,左端点负责控制去重,遍历完之后记录下来整个过程中最长的子串长度即可 代码参考 go">func lengthOfLongestSubstring(s string) int {hash := [128]bool{}left := 0ans := 0for right,value := range s{for hash[value]{hash[s[left]] =falseleft++}hash[value] = trueans = max(ans, right-left+1)}return ans } tips(好精妙的一道题) hash := [128]bool{}可以开一个类似于哈希表功能的数组,因为可以存字符的ASCLL码所以设置为128,bool值代表当前值是否有重复的情况(false代表当前没有重复的情况)更新方式为:遍历右端点,每次设置hash[value] = true,即每次遍历的时候都把右端点的值记录进去子串长度的计算公式为:right-left+1