1. 程式人生 > >nowcoder 最長無重複字元子串

nowcoder 最長無重複字元子串

題目

對於一個字串,請設計一個高效演算法,找到字串的最長無重複字元的子串長度。
給定一個字串A及它的長度n,請返回它的最長無重複字元子串長度。保證A中字元全部為小寫英文字元,且長度小於等於500。
測試樣例:
“aabcb”,5
返回:3

思路

定義一個pre_index記錄前一個重複字元的下標。

程式碼

class DistinctSubstring:
    def longestSubstring(self, A, n):
        # write code here
        maxLen = 1
        pre = -1
        curr_dict = {}
        for
i, v in enumerate(A): pre = pre if v not in curr_dict else max(pre, curr_dict[v]) maxLen = max(maxLen, i - pre) curr_dict[v] = i return maxLen