【LeetCode】無重復字符的最長子串
阿新 • • 發佈:2018-06-04
self ret ges wke 遍歷 pytho int urn python
給定一個字符串,找出不含有重復字符的最長子串的長度。
示例:
給定 "abcabcbb"
,沒有重復字符的最長子串是 "abc"
,那麽長度就是3。
給定 "bbbbb"
,最長的子串就是 "b"
,長度是1。
給定 "pwwkew"
,最長子串是 "wke"
,長度是3。請註意答案必須是一個子串,"pwke"
是 子序列 而不是子串。
解題思路:
1. 給兩個數組分別存儲最長子串和當前子串
2.遍歷字符串,只要字符不在當前子串中就添加進去
3.判斷當前子串跟最長子串的長度,如果當前串大於最長串,就把最長串替換掉
4.如果字符在當前串存在,就以這個字符在當前串的位置進行切片,切片完成再添加這個字符
class Solution: def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ cur_str = []; sum_str = []; for i in s: if not i in cur_str: cur_str.append(i) else: cur_str = cur_str[cur_str.index(i)+1:] cur_str.append(i) if len(cur_str) > len(sum_str): sum_str = cur_str return len(sum_str)
【LeetCode】無重復字符的最長子串