无重复字符的最长子串
给定一个字符串,找出不含有重复字符的最长子串的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 无重复字符的最长子串是 "abc",其长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 无重复字符的最长子串是 "b",其长度为 1。
示例 3:
输入: "pwwkew"
输出: 3
解释: 无重复字符的最长子串是 "wke",其长度为 3。
请注意,答案必须是一个子串,"pwke" 是一个子序列 而不是子串。
Python:
思路:
1.定义 i 记录 所有不重复元素组成 res 的最大长度
2.res 拼接所有不重复的char 字母
3.如果有重复的,找到重复字母char的 index,把char之后的字符串 重新 赋值给 res、 res 再拼接上 char
class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
res = ""
i = 0
for char in s:
if char not in res:
res += char
else:
res = res[res.find(char) + 1:]
res += char
if len(res) > i:
i = len(res)
return i