LeetCode題目總結-滑窗法


LeetCode題目總結-滑動窗口法

滑動窗口法:此方法首先建立一個長度為零的窗口,把右側窗口向右移動,當新的元素與原來窗口中的元素不重復時,把新的元素加入其中,並更新窗口長度;當新的元素與原集合中的元素重復時,把窗口的左側向右移動,直至原窗口中的元素不含新的元素。

3.  無重復字符的最長子串

class Solution: def lengthOfLongestSubstring(self, s: str) -> int: if not s: return 0 start, end = 0, 0 res, lookup = 0, set() while start < len(s) and end < len(s): if s[end] not in lookup:  # 最新碰到的字符串中沒有出現過
                lookup.add(s[end])    # 記錄下當前子串新增的字符
                res = max(res, end-start+1)  # 更新最大長度
                end += 1           # 窗口向后滑動
            else:                  # 新的字符在以前已經出現過了,窗口的左側從左向右移動,直到原字符串不包含新的字符串
 lookup.discard(s[start]) start += 1
                
        return res

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM