你好呀
我是然怡
题目来源:力扣(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,再用字典记录当前位置。妙啊~
网友评论