Skip to content

无重复字符的最长字串

题目链接: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
}
本站访客数 人次 本站总访问量