首页 > 试题广场 >

无重复字符的最长子串

[编程题]无重复字符的最长子串
  • 热度指数:2671 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

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


输入描述:

一行一个字符串,长度不超过1000



输出描述:

输出一个数字表示最长子串的长度

示例1

输入

abcabcbb

输出

3

说明

因为无重复字符的最长子串是"abc",所以其长度为3.

def maxSubstr(s):
    d,start,ans={},0,0
    for i in range(len(s)):
        start = max(start,d.get(s[i],-1)+1)
        ans = max(ans,i-start+1)
        d[s[i]]=i
    return ans
s=input()
print(maxSubstr(s))

发表于 2021-03-18 01:31:04 回复(0)
#字节跳动二面没写出来, 那就补补好啦, 小透明加油。
#其实这道题没有面试官说的那么简单的。。。小小抱怨一下。
def check_max(s):
    if  not s:
        return 0
    max_num=0 #记录最长字符串长度
    long_str="" #记录最长的字符串
    for index in range(len(s)):
        current=s[index] #当前字符
        if current not in long_str: #如果当前字符不在应该返回的最长的字符串里
            long_str+=current #最长的字符串加上当前字符串
            max_num=max(len(long_str),max_num) #最长的字符串加上当前字符串的长度和之前存储的最长的字符串的长度取最大值
        else:#如果当前字符已经在应该返回的最长的字符串里
            repeat_index=long_str.find(current)#找到这个重复的字符在最长的字符串里的位置

            #最长的字符串更新成该重复字符串之后的字符串加上该字符串
            # 例如"pwawbc"遇到第二个重复的w则变成: long_str[repeat_index+1:]:"a"+current"w"="aw"
            long_str=long_str[repeat_index+1:]+current
    return max_num

s=input()
print(check_max(s))
加油。
发表于 2020-09-08 19:34:59 回复(0)
def sub_str(ans):
    ans_list = list(ans)
    ret = []
    max_ = 0
    while ans_list:
        tmp = ans_list.pop(0)
        #print(tmp)
        if tmp not in ret:
            ret.append(tmp)
            max_ = max(len(ret), max_)
            #print(max_)
        else:
            #print('result ', ret)
            pos = ret.index(tmp)
            #print('pos',pos, ret[pos+1:])
            ret = ret[pos+1:]
            ret.append(tmp)
    print(max_)

if __name__ == '__main__':
    ans = input()
    sub_str(ans)


编辑于 2020-09-13 11:17:12 回复(2)
s = input().strip(' ')
dp = [1] * len(s)
for i in range(1,len(s)):
    if s[i] not in s[i-dp[i-1]:i]:
        dp[i] = dp[i-1] + 1
    else:
        idx = s[i-dp[i-1]:i].index(s[i])
        dp[i] = dp[i-1] -idx
print(max(dp))

发表于 2020-08-21 01:44:12 回复(0)