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

三网合一网站远吗降低生育

三网合一网站远吗,降低生育,网络营销策划推广公司有哪些,爬黄山旅游攻略游览路线文章目录摘要描述题解答案题解代码分析详细解析:示例测试及结果结果解释:时间复杂度总结摘要 在日常开发中,我们经常需要处理字符串,比如分析用户输入、文本挖掘、数据清洗等等。而这道题就特别实用:如何找到一个字符…

在这里插入图片描述
在这里插入图片描述

文章目录

    • 摘要
    • 描述
    • 题解答案
    • 题解代码分析
      • 详细解析:
    • 示例测试及结果
      • 结果解释:
    • 时间复杂度
    • 总结

摘要

在日常开发中,我们经常需要处理字符串,比如分析用户输入、文本挖掘、数据清洗等等。而这道题就特别实用:如何找到一个字符串中最多包含 K 个不同字符的最长子串?本篇文章将用 Swift 手把手带你搞懂滑动窗口的使用技巧,从思路到代码再到复杂度分析,一站式搞定。

描述

题目是这样描述的:

给定一个字符串 s 和一个整数 k,请你找出字符串中 最多包含 k 个不同字符的最长子串的长度

这个问题的关键在于“最多包含 K 个不同字符”,也就是说超过 K 个不同字符就不符合要求,我们要把这个限制“滑动”管理好。

题解答案

我们使用 滑动窗口 + 哈希表 的经典组合来解决这个问题。滑动窗口主要用来维护当前的子串区间,而哈希表负责统计窗口内字符的出现频次。

核心思路:

  • 用两个指针维护一个窗口 [left, right]
  • 用一个 Dictionary<Character, Int> 来记录当前窗口内每个字符的出现次数
  • 如果窗口里的不同字符数超过 K,就不断左移窗口直到满足条件
  • 在每次满足条件的窗口中更新最大长度

题解代码分析

func lengthOfLongestSubstringKDistinct(_ s: String, _ k: Int) -> Int {if k == 0 || s.isEmpty { return 0 }let chars = Array(s)var left = 0var maxLength = 0var charCount = [Character: Int]()for right in 0..<chars.count {let rightChar = chars[right]charCount[rightChar, default: 0] += 1// 当不同字符数量超过 k,移动左指针收缩窗口while charCount.keys.count > k {let leftChar = chars[left]charCount[leftChar]! -= 1if charCount[leftChar]! == 0 {charCount.removeValue(forKey: leftChar)}left += 1}// 记录当前符合条件的最大长度maxLength = max(maxLength, right - left + 1)}return maxLength
}

详细解析:

  • charCount[rightChar, default: 0] += 1:把新字符加入窗口并计数
  • charCount.keys.count > k:检查窗口是否超出 K 种字符
  • charCount.removeValue(forKey: leftChar):清理掉数量为 0 的字符,保持哈希表干净
  • right - left + 1 是当前窗口长度,每次都尝试更新最大值

示例测试及结果

print(lengthOfLongestSubstringKDistinct("eceba", 2)) // 输出 3,子串为 "ece"
print(lengthOfLongestSubstringKDistinct("aa", 1))    // 输出 2,子串为 "aa"
print(lengthOfLongestSubstringKDistinct("abcadcacacaca", 3)) // 输出 11,子串为 "cadcacacaca"

结果解释:

  • 示例 1:子串 "ece" 有两个不同字符,长度为 3
  • 示例 2:整个字符串只有一种字符,直接返回长度 2
  • 示例 3:可以从第 2 个字符开始算起,取到最长满足条件的子串 "cadcacacaca"

时间复杂度

  • 时间复杂度:O(n)
    整个字符串遍历一遍,每个字符最多进出窗口一次。
  • 空间复杂度:O(k)
    哈希表最多存储 K 个不同字符的频率。

总结

这道题是滑动窗口思想的经典应用,通过“收缩窗口”控制不同字符的种类,再通过变量记录最长长度。在实际项目里,如果你在做关键词搜索优化、用户行为分析、或者简单的文本压缩策略,这类“限定种类数量”的需求其实挺常见的。

Swift 写法也很清晰,用 Dictionary 来统计频次,逻辑直观,性能也不错。

http://www.dtcms.com/a/548357.html

相关文章:

  • 怎么在网站上添加地图网站的关于页面
  • 网站建设手机官网个人主页设计模板图片
  • 满洲里网站建设WordPress api发布接口
  • 移动网站建设解决方案最全的域名后缀
  • 一家公司做网站需要什么资料如何帮人做网站赚钱
  • 建筑设计网站 知乎学生做网站
  • 图片网站建设方案c语言精品课程网站开发
  • saas建站cmsseo网站怎么搭建
  • 游戏源代码网站建商城网站需要多少钱
  • 做网站镜像步骤店面设计餐饮风格
  • wordpress创建分站点常州网站备案
  • 做图片推广的网站有哪些资源共享网站怎么做
  • 做淘宝客找商品网站有哪些Python个人网站建设论文
  • 响应式网站 768 320m版网站开发
  • 企业网站广告图片轮播代码网站交易平台建设
  • 做影视剧组演员垂直平台网站购物网站管理系统
  • 电子商务网站开发的基本流程包括江苏省城市建设信用手册网站
  • 商城网站建设大连分销系统什么意思
  • 17做网站 一件代发自建销售网站
  • 知名做网站费用百度开户要多少钱
  • 设计基础网站推荐wordpress提示没有
  • 网站目录文件祥云平台做网站好不好
  • 用土豆做美食的视频网站大数据营销平台那么多
  • 求推荐专门做借条的网站南京网站设计公司兴田德润优惠吗
  • 静安企业网站建设电子商务有限公司官网
  • 购物网站开发计划书做网站公司费用
  • 西安网站群建设做网站服务器要什么系统
  • 广东网站建设推荐宜春做网站公司怎么样
  • DW怎么做电商网站江苏天德建设工程有限公司网站
  • 里水哪里做有做网站wordpress个人博客主题推荐