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

【Swift】LeetCode 3. 无重复的最长子串

3. 无重复的最长子串

在这里插入图片描述

题目描述

在这里插入图片描述

思路 and Swift 题解

这道题目可谓是面试题中经典中的经典,在 CodeTop 上的排名断档式地排在了第一位。我曾在今年五月的一次面试当中遇到了这个题目。解决这道题目的思路其实不难,考察的就是我们对“滑动窗口”这个知识点的掌握。

首先,我们建立一个字典,并建立双指针slowfast,从左向右对这个字符串进行遍历。fast在遍历的每次循环当中固定向右移动一个位置,并将遇到的字符加入到字典当中作为 Key,使用 Value 作为字符的出现次数。与此同时,当fast所在位置的字符在字典中出现的次数超过1次时,就需要开始维护滑动窗口,不断地将slow位置(初始为第一个位置,也就是下标索引0)的字符从字典当中删除一次,并对slow进行右移,直到fast所在位置的字符出现的次数不超过1为止。此时,slowfast之间的区间就是无重复的子串,每次使用一个变量来记录最大的长度,最后将其返回即可得到答案。

在使用 Swift 进行解题时,需要注意几个点:

  1. 字符串不能够直接通过下标进行访问,如果建立的字典类型是[Character: Int],那么就需要先显式地将字符串String通过Array()构造器转为数组(这个数组的类型是[Character],再进行操作);
  2. Swift 在通过 Key 对 Dictionary 进行访问时,得到的 Value 都是可选类型的。因此如果要对 Value 的值进行修改,需要使用map[Key]!,也就是加上!来解除可选类型。这样做只有在我们确定可选类型有值时才是安全的,如果不能确定可选类型是否有值,应该使用可选绑定或default。如果 Key 不存在于 Dict 当中,但使用Dict[Key]!,那么将会导致运行时错误

完整的 Swift 题解是:

class Solution {func lengthOfLongestSubstring(_ s: String) -> Int {var chars = Array(s)    // String 转为 [Character]var mp = [Character: Int]()var slow = 0, fast = 0, ans = 0while fast < chars.count {mp[chars[fast], default: 0] += 1while mp[chars[fast], default: 0] > 1 {mp[chars[slow]]! -= 1slow += 1}ans = max(ans, fast - slow + 1)fast += 1}return ans}
}
http://www.dtcms.com/a/499834.html

相关文章:

  • 深圳品牌网站建设公司招聘百度账号中心官网
  • jdk.nio.zipfs 包详解
  • 小说网站建设目的车牌照损坏在网站做的能用吗
  • 专业提供网站建设服务包括wordpress 联系人表单
  • Spring 核心原理:Bean 作用域、生命周期与 SpringBoot 自动配置
  • [MLflow] 环境管理 | MLflow模型 | Flavors与pyfunc
  • iis网站防盗链浙江鼎兴建设有限公司网站
  • python+django/flask的在线心理咨询系统
  • 继电保护:距离保护:过渡电阻影响
  • FAST DDS-GEN--通过 IDL 定义数据类型
  • 网站建设推广信息企业网站 建设流程
  • 连云港建设局网站网站建设培训南宁
  • uni-ap 地图报错Map key not configured
  • 新版 perf 文件解读与性能分析
  • JAVA国际版图文短视频交友系统源码支持H5 + APP
  • 【图像处理】图片的前向映射与后向映射
  • K8S(十三)—— Helm3从入门到实战:简化Kubernetes应用部署与管理
  • 如何录制视频,用 OBS
  • 网站地址做图标大型公司网站建设
  • 图片下载网站哪个好自己建设博客网站
  • 宝安哪有网站建设网站制作公司优势
  • 数据结构之——线性表的应用
  • Streamlit 交互与人python工智能网站开发基础
  • 湖北省建设厅官方网站文件福建省龙岩市新罗区建设局网站
  • 【点云】pointnet网络梳理
  • 我编译好的opencv库与ros2 humble库里面的opencv库的解决方案
  • 免费seo网站自动推广wordpress电子商务站
  • 不同程序建的网站风格网站名称 备案
  • 鸿蒙 emitter 和 eventHub 的区别
  • Java中Elasticsearch完全指南:从零基础到实战应用