● 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
输入: s = “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
输入: s = “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
输入: s = “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。
- 思路:
○ 首先遍历字符串,然后维护一个队列;
○ 当当前字符不在队列中时,append;
○ 当当前字符在队列中时,记录最大长度,并且循环的pop,直到当前字符不在队列中;
○ 字符串循环结束后,比较记录的最大长度和剩余队列的长度。
def lengthOfLongestSubstring(s: str) -> int:'''无重复的最长子串:param s::return:'''length = 0queue = []for i in s:if i in queue:length = max(length, len(queue))while i in queue:queue.pop(0)queue.append(i)return max(length, len(queue))print(lengthOfLongestSubstring("abcabcbb"))
print(lengthOfLongestSubstring("bbbbbb"))
print(lengthOfLongestSubstring("pwwkew"))