给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
#字节跳动二面没写出来, 那就补补好啦, 小透明加油。 #其实这道题没有面试官说的那么简单的。。。小小抱怨一下。 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))加油。
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)