leetcode力扣刷題系列python——三、無重複字符的最長子串

題目:spa

 

給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。指針

 

示例 1:code

 

輸入: "abcabcbb"
輸出: 3
解釋: 由於無重複字符的最長子串是 "abc",因此其長度爲 3。blog

 

示例 2:字符串

輸入: "bbbbb"
輸出: 1
解釋: 由於無重複字符的最長子串是 「b」,因此其長度爲 1。


解法:

採用哈希表法:設定左右雙指針l和r,遍歷字符串;
哈希表存儲某字符s[i]最新在字符串中出現的位置index + 1,key, value對應s[i], i;
左指針在遍歷過程當中:
若s[i]不在HashMap中,則跳過;
不然,l 指針設定爲 l 和 dic[s[r]] 的最大值,即修改以後,保證新字符串中沒有重複字符。
每次更新長度最大值resstring

 1 class Solution:  2     def lengthOfLongestSubstring(self, s: str) -> int:  3         dic = {}  4         l, res = 0, 0  5         for r in range(len(s)):  6             if s[r] in dic:  7                 l = max(dic[s[r]], l)  8             dic[s[r]] = r + 1
 9             res = max(res, r - l + 1) 10         return res
相關文章
相關標籤/搜索