题目链接: 剑指Offer 48. 最长不含重复字符的子字符串
题目描述:
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。
解法思路:
代码:
func lengthOfLongestSubstring(s string) int {
var res int
if s == ""{
return res
}
//双指针算法,j指针从前往后移动,表示以j为结尾的子串,
//i 也从前往后移动
n := len(s)
m := make(map[byte]int,n)
for i,j:=0,0;j < n;j++{
m[s[j]]++
if m[s[j]] > 1 { //说明当前字符前面出现过,因此要找到前面出现的位置,
for m[s[i]] == 1{ //对于前面只出现一次的字符,跳过
m[s[i]]--
i++
}
//for循环结束后,此时 i 指针指向的就是上面重复的字符
m[s[i]]-- //出现数量减 1
i++ //i 向后移动一位
}
res = max(res,j-i+1)
}
return res
}
func max(a,b int)int{
if a > b {
return a
}
return b
}
标签:字符,return,48,Offer,int,res,++,字符串
From: https://www.cnblogs.com/lxing-go/p/17686760.html