每日一题---3. 无重复字符的最长子串[力扣][Go]

题目描述

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

代码

func lengthOfLongestSubstring(s string) int {
    
    
	// 判断非空
	if s == "" {
    
    
		return 0
	}
	max := 1		// 记录最大次数
	afterIndex := 1		// 利用切片,需要后面下标
	frontIndex := 0		// 利用切片,需要前面下标
	for frontIndex < len(s)  {
    
    
		for afterIndex < len(s){
    
    
			// 字符不存在则加一,否则退出两下标都加一
			if isHaveChar(s[frontIndex:afterIndex],s[afterIndex]) {
    
    
				break
			} else {
    
    
				afterIndex++
			}
		}
		if max < afterIndex - frontIndex {
    
     // 判断本次的长度和最大长度内个长
			max = afterIndex - frontIndex
		}
		frontIndex ++
	}
	return max
}

// 判断字符串中是否有特定字符
func isHaveChar(s string,n uint8 ) bool {
    
    
	for _, i := range s {
    
    
		if uint8(i) == n{
    
    
			return true
		}
	}
	return false
}

测试结果

在这里插入图片描述

Supongo que te gusta

Origin blog.csdn.net/weixin_52025712/article/details/121055563
Recomendado
Clasificación