无重复字符的最长字串
题目链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters
附上 go 语言版本的代码,纯暴力解法,首先对 len(s)==0 时进行特判直接返回 0,之后默认答案最小为 1。使用左右指针分别指向当前遍历子数组的左右端点。left 指针在外层循环不断 +1 迭代。内层循环 right 指针每次成功 +1 时使得当前临时结果 +1,并且使用 map 在扩充子数组右端点时检查是否出现子数组中的重复元素(right 指针 +1 失败),如果出现直接 break,尝试更新答案。不断在 left 指针的迭代中尝试获取 result 最大值,最后返回 result 即可
func Max(numOne int, numTwo int) int {
if numOne > numTwo {
return numOne
} else {
return numTwo
}
}
func lengthOfLongestSubstring(s string) int {
if len(s)==0{
return 0
}
left:=0
result:=1
for left<len(s){
right:=left
temp:=make(map[uint8]bool)
tempResult:=0
for ;right<len(s);right++{
if temp[s[right]]{//当子数组中出现重复元素时直接break结束循环
break
}
temp[s[right]]=true
tempResult++
}
result=Max(result,tempResult)//尝试更新result的最大值
left++//每次循环改变left位置,不断寻找可能的最大答案
}
return result
}