nowcoder 最長無重複字元子串
阿新 • • 發佈:2019-02-03
題目
對於一個字串,請設計一個高效演算法,找到字串的最長無重複字元的子串長度。
給定一個字串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