zl程序教程

您现在的位置是:首页 >  其他

当前栏目

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

2023-03-14 22:55:14 时间

题目描述

给定一个字符串 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
}

测试结果

image