首页 > 试题广场 >

查找无重复最长子串

[编程题]查找无重复最长子串
  • 热度指数:5106 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定一个字符串,请找出其中长度最长且不含有重复字符的子串,计算该子串长度。

数据范围:输入的字符串长度满足 ,字符串中仅包含小写的英文字母

输入描述:
输入类型为字符串,例如”abcde“


输出描述:
输出类型为整型, 例如 5
示例1

输入

pwwkew

输出

3

说明

无重复字符的最长子串是"kew",其长度为 3 
package main

import (
    "fmt"
    "os"
    "bufio"
)

var in=bufio.NewReader(os.Stdin)

func main() {
    var s string
    fmt.Fscan(in,&s)
    cnt:=map[byte]int{}
    ans:=0
    for l,r:=0,0;r<len(s);r++{
        cnt[s[r]]++
        for cnt[s[r]]>1&&l<r{
            cnt[s[l]]--
            if cnt[s[l]]==0{
                delete(cnt,s[l])
            }
            l++
        }
        if len(cnt)>ans{
            ans=len(cnt)
        }
    }
    fmt.Print(ans)
}

发表于 2023-03-22 01:11:11 回复(0)