leetcode Longest Substring with At Most Two Distinct Characters 滑动窗口法
生活随笔
收集整理的這篇文章主要介紹了
leetcode Longest Substring with At Most Two Distinct Characters 滑动窗口法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- 題目解析
- 代碼如下
題目解析
這一題是一道會員的題目,題目介紹如下:
Given a string, find the length of the longest substring T that contains at most 2 distinct characters.For example, Given s = “eceba”,T is "ece" which its length is 3.
意思的大概情況是找出一個字符串中不相同字符不超過兩個的最長子串
根據我們之前介紹的滑動窗口法的解法:
滑動窗口法詳解
leetcode 438. Find All Anagrams in a String 滑動窗口法
leetcode 3. Longest Substring Without Repeating Characters 最長非重復子串的長度 滑動窗口法
此題與leetcode第三題,相似非常高,可以先做第三題再做這一題:
代碼如下
from collections import defaultdictclass Solution:def lengthOfLongestSubstringTwoDistinct(self, s):begin, end, counter, length = 0, 0, 0, 0map_dict = defaultdict(int)while end < len(s):c = s[end]map_dict[c] += 1# counter 表示新的字符if map_dict == 1:counter += 1end += 1# 如果新字符的數量大于2,就開始移動窗口while counter > 2:char_tmp = s[begin]if map_dict[char_tmp] == 1:counter -= 1map_dict[char_tmp] -= 1begin += 1length = max(length, end - begin)return length
總結
以上是生活随笔為你收集整理的leetcode Longest Substring with At Most Two Distinct Characters 滑动窗口法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode 3. Longest
- 下一篇: Aho-Corasick 多模式匹配算法