当前位置: 首页 > news >正文

郑州网站建设特色竞价推广网络推广运营

郑州网站建设特色,竞价推广网络推广运营,正规的手游代理平台,免费自己做网站手机LeetCode 第159题:至多包含两个不同字符的最长子串 题目描述 给定一个字符串 s,找出 至多 包含两个不同字符的最长子串 t,并返回该子串的长度。 难度 中等 题目链接 点击在LeetCode中查看题目 示例 示例 1: 输入: s &qu…

LeetCode 第159题:至多包含两个不同字符的最长子串

题目描述

给定一个字符串 s,找出 至多 包含两个不同字符的最长子串 t,并返回该子串的长度。

难度

中等

题目链接

点击在LeetCode中查看题目

示例

示例 1:

输入: s = "eceba"
输出: 3
解释: t 是 "ece",长度为3。

示例 2:

输入: s = "ccaabbb"
输出: 5
解释: t 是 "aabbb",长度为5。

示例 3:

输入: s = "aaaaa"
输出: 5
解释: t 是 "aaaaa",长度为5。

提示

  • 1 <= s.length <= 105
  • s 由英文字母组成

解题思路

方法:滑动窗口

使用滑动窗口和哈希表来维护不同字符的计数。
关键点:

  1. 使用哈希表记录窗口内字符的出现次数
  2. 当不同字符数超过2时,移动左指针
  3. 更新最大长度
  4. 处理边界情况

时间复杂度:O(n),其中n是字符串长度。
空间复杂度:O(1),因为最多存储3个字符的计数。

代码实现

C# 实现

public class Solution {public int LengthOfLongestSubstringTwoDistinct(string s) {if (string.IsNullOrEmpty(s)) return 0;Dictionary<char, int> dict = new Dictionary<char, int>();int left = 0, maxLen = 0;for (int right = 0; right < s.Length; right++) {char c = s[right];if (!dict.ContainsKey(c)) {dict[c] = 0;}dict[c]++;while (dict.Count > 2) {char leftChar = s[left];dict[leftChar]--;if (dict[leftChar] == 0) {dict.Remove(leftChar);}left++;}maxLen = Math.Max(maxLen, right - left + 1);}return maxLen;}
}

Python 实现

class Solution:def lengthOfLongestSubstringTwoDistinct(self, s: str) -> int:if not s:return 0char_count = {}left = max_len = 0for right, char in enumerate(s):char_count[char] = char_count.get(char, 0) + 1while len(char_count) > 2:left_char = s[left]char_count[left_char] -= 1if char_count[left_char] == 0:del char_count[left_char]left += 1max_len = max(max_len, right - left + 1)return max_len

C++ 实现

class Solution {
public:int lengthOfLongestSubstringTwoDistinct(string s) {if (s.empty()) return 0;unordered_map<char, int> charCount;int left = 0, maxLen = 0;for (int right = 0; right < s.length(); right++) {charCount[s[right]]++;while (charCount.size() > 2) {charCount[s[left]]--;if (charCount[s[left]] == 0) {charCount.erase(s[left]);}left++;}maxLen = max(maxLen, right - left + 1);}return maxLen;}
};

性能分析

各语言实现的性能对比:

实现语言执行用时内存消耗特点
C#92 ms38.2 MB实现简洁,性能适中
Python156 ms16.8 MB代码最简洁
C++24 ms9.6 MB性能最优

补充说明

代码亮点

  1. 使用滑动窗口优化时间复杂度
  2. 使用哈希表维护字符计数
  3. 代码结构清晰,易于维护

常见错误

  1. 没有处理空字符串的情况
  2. 没有正确处理字符计数为0的情况
  3. 边界条件处理不当

相关题目

  • 3. 无重复字符的最长子串
  • 340. 至多包含 K 个不同字符的最长子串
  • 424. 替换后的最长重复字符
http://www.dtcms.com/a/425630.html

相关文章:

  • 企业网站的推广方法福清市建设局官方网站
  • 深圳网站建设 网站制作 网站设计【迅美】旧版长沙网站建设及推广公司
  • 专业门户网站的规划与建设中国建设银银行招聘网站
  • 帮站seowordpress 本地头像
  • 常熟做网站多少钱小程序免费制作平台有哪些
  • 潍坊市住房和城乡建设厅网站wordpress internal
  • 网站设计O2O平台佛山总代理wordpress 透明背景图片
  • 网站平台建设模板创新型的福州网站建设
  • 怎么免费发布网站在哪个网站上找超市做生鲜
  • 电子商务网站网络推广方式辽宁省住房和建设厅网站
  • 福州企业网站推广现在做推广有什么好的方法
  • 两个网站放在同一个空间有什么影响吗国外购物网站平台有哪些
  • 南宁建筑网站上海注册公司能落户上海吗
  • 网站建设与开发选题wordpress 非小工具形式 微博秀
  • 威联通怎么建设网站产品类网站
  • 门户网网站建设功能需求表浙江省建设厅网站
  • 北京手机网站制作多少钱优帮云首页推荐
  • 营销型网站建设服务可视化cms
  • 微信官网与手机网站区别网站开发遇到的最大困难
  • 苏州高端网站设计制作钓鱼网站制作
  • 网页设计代码网站wordpress两个主题
  • 电子商务网站建设包括哪些内容博罗中山网站建设
  • 北京市网站建设 维护推荐南安seo关键词
  • 深圳技术支持 骏域网站建设成品在线视频免费入口
  • 个体工商户可以做网站备案吗网站采集被降权
  • 建立网站的目的和功能购物网站开发背景需求
  • 做网站开发使用百分比的好处空间设计公司
  • 上线了做网站要钱头条广告入口
  • wordpress建站工具wordpress cpu突然
  • 广州网站制作托管镇海淘宝网站建设