- 题目解析
- 代码如下
题目解析 这一题是一道会员的题目,题目介绍如下:
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.
意思的大概情况是找出一个字符串中不相同字符不超过两个的最长子串
【python|leetcode Longest Substring with At Most Two Distinct Characters 滑动窗口法】根据我们之前介绍的滑动窗口法的解法:
滑动窗口法详解
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, 0
map_dict = defaultdict(int)
while end < len(s):
c = s[end]
map_dict[c] += 1
# counter 表示新的字符
if map_dict == 1:
counter += 1
end += 1
# 如果新字符的数量大于2,就开始移动窗口
while counter > 2:
char_tmp = s[begin]
if map_dict[char_tmp] == 1:
counter -= 1
map_dict[char_tmp] -= 1
begin += 1
length = max(length, end - begin)
return length
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- java|微软认真聆听了开源 .NET 开发社区的炮轰( 通过CLI 支持 Hot Reload 功能)