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

引领网站手机网站建设的整体流程

引领网站,手机网站建设的整体流程,自己用电脑做网站服务器吗,关键词林俊杰免费听3.无重复字符的最长子串 题目: 给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出…

3.无重复字符的最长子串

题目:

给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。

示例 1:

输入: s = “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
示例 2:

输入: s = “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
示例 3:

输入: s = “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是子串的长度,“pwke” 是一个子序列,不是子串。

提示:

0 <= s.length <= 5 * 104
s 由英文字母、数字、符号和空格组成


思路:滑动窗口 + 哈希表

  1. 左指针 i 初始不动,右指针 j 向右移动,
  2. 当 j 指向的字符在窗口内出现重复时,需要将左指针 i 移动到上一次该字符出现位置的下一位,同时,为了保证窗口内始终无重复字符,i 不能回退。因此实际更新时要取 (当前左边界,上一次该重复字符出现的位置+1) 的较大值

不能回退的原因是,如果左指针回到窗口左边界左侧的旧位置,会把已经丢弃的字符重新包括进窗口,从而导致重复字符再次出现,破坏无重复子串的性质。

  1. 判断字符是否重复以及获取上一次出现的位置可以通过哈希表实现:key 是字符,value 是该字符上一次出现的下标。当 j 指向的字符在 map 中出现且位置在当前窗口内,就说明遇到重复字符。
  2. 每次窗口更新后,计算长度 j - i + 1 并维护最大值。
  3. 最后更新哈希表,记录当前字符最新出现的位置。

数据结构map:

m := make(map[byte]int)
map:Go 的哈希表(字典),存储键值对。
键类型 key = byte:byte 本质是 uint8,可以存储 0~255 的整数。
对应 ASCII 字符:英文大小写字母 ‘a’ ~ ‘z’、‘A’ ~ ‘Z’ ,数字 ‘0’ ~ ‘9’ ,标点符号和一些控制字符
值类型 value = int:用来记录字符在字符串中上一次出现的下标。


代码实现(Go):

详细注解:

//package main
//
//import "fmt"func lengthOfLongestSubstring(s string) int {// map: 记录每个字符上一次出现的下标// key: byte (ASCII字符,0~255,可以直接存字母、数字和符号)// value: int,字符上一次出现的索引m := make(map[byte]int)ans := 0 // 保存最长无重复子串长度// i: 窗口左边界, j: 窗口右边界for i, j := 0, 0; j < len(s); j++ {// 检查 s[j] 是否在窗口内出现过if v, ok := m[s[j]]; ok {// 更新左边界 i:// 如果 v+1 > i,说明上一次出现的重复字符仍在窗口里// 所以把 i 移动到 v+1(重复字符下一位)// 如果 v+1 <= i,说明重复字符在窗口外,不需要移动 iif v+1 > i {i = v + 1}}// 更新最大长度if j-i+1 > ans {ans = j - i + 1}// 记录 s[j] 的最新出现位置m[s[j]] = j}return ans
}//func main() {
//	s := "abcabcbb"
//	fmt.Println(lengthOfLongestSubstring(s)) // 输出3
//}

无注释:

//package main
//
//import "fmt"func lengthOfLongestSubstring(s string) int {m := make(map[byte]int)ans, i := 0, 0for j := 0; j < len(s); j++ {if v, ok := m[s[j]]; ok {if v+1 > i {i = v + 1}}if j-i+1 > ans {ans = j - i + 1}m[s[j]] = j}return ans
}//func main() {
//	s := "abcabcbb"
//	fmt.Println(lengthOfLongestSubstring(s)) // 输出3
//}

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

相关文章:

  • 计算机网络【第四章-网络层】
  • 响应式网站建设特征wordpress网站不显示系列
  • Fiddler抓包工具使用教程,代理设置与调试方法实战解析(含配置技巧)
  • linux系统中如何在root用户中将某个文件夹目录的权限赋值给其它用户(主要说的是 方法 1)
  • 手机网站引导页wordpress 动漫主题
  • 科技服务公司网站模版如何做视频类网站
  • 最小覆盖子串
  • 算法4.0
  • 云网智安一体:中国电信数字安全创新的技术破局与生态构建
  • 制作音乐网站实验报告佛山做外贸网站渠道
  • 企业级数据库实操手册:从架构部署到安全运维的落地指南
  • 网络安全认证培训机构的痛点
  • 网站搜索引擎推广方案做网页设计的网站
  • 国内坚持做正品的网站女人学ui有前途吗
  • centos如何做的时间同步
  • CentOS 7 环境下 RabbitMQ 的部署与 Web 管理界面基本使用指南
  • 【AT指令解析】TencentOS Tiny AT指令解析源码分析1-简介
  • centos/cuos如何开启软件源
  • Java常见业务场景之批处理优化:从稳定性、性能、数据一致性、健壮性、可观测性五大维度,系统提供批处理优化方案
  • 网站建设拟采用的技术路线深圳互联网公司招聘
  • 人工智能学习:逻辑回归
  • 23种设计模式——命令模式(Command Pattern)
  • 网站空间用万网的 域名不在万网gta5 网站正在建设中
  • 枚举单例模式:Java单例实现的终极方案解析
  • 1.单例模式有哪几种常见的实现方式?
  • 安蓉建设总公司网站服装设计官网
  • PyTorch的安装与使用
  • 解决办法:win11连接蓝牙的时候每次连接都是100%的音量
  • foundry创建项目
  • 网站整体地图怎么做招设计师在哪里找