python代码|leetcode无重复字符的最长子串(中等)

2021-04-12  本文已影响0人  苏钟白

你好呀 

我是然怡

题目来源:力扣(LeetCode)

1

无重复字符的最长子串

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

示例 1:

输入: s = "abcabcbb"

输出: 3 

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

示例 2:

输入: s = "bbbbb"

输出: 1

解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: s = "pwwkew"

输出: 3

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

请注意,你的答案必须是子串的长度,"pwke" 是一个子序列,不是子串。

示例 4:

输入: s = ""

输出: 0

提示:

0 <= s.length <= 5 * 104

s 由英文字母、数字、符号和空格组成

2

通过代码1(自己写)

通过代码2(参考)

3

总结

1

我的思路简单暴力:

两层for循环,把字符串转为列表后,依次遍历每一个列表元素,在里层循环中如果出现相同的字母,则跳出循环,记录以该元素为第一个字母的长度,保存在count列表中。

再计算以下一个字母开头的满足条件的最长长度,依次循环记录。

最后如果count列表不为零则输出count列表的最大值,否则输出0。

2

看了别人的代码,感觉我的代码太low了。

首先用了enumerate()函数,这个函数可以循环遍历字符串或列表的索引和对应的元素。

再使用字典,因为字典的key值是唯一的,所以如果元素已经在字典中,则将left(记录最长字符串的最左边的元素坐标)+1,再用字典记录当前位置。妙啊~

上一篇下一篇

猜你喜欢

热点阅读