golang中怎么利用leetcode 实现一个无重复字符的最长子串
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章给大家介绍golang中怎么利用leetcode 实现一个无重复字符的最长子串,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。给定一个字符串,请你找出其中不含有重复字符的
千家信息网最后更新 2025年02月01日golang中怎么利用leetcode 实现一个无重复字符的最长子串
这篇文章给大家介绍golang中怎么利用leetcode 实现一个无重复字符的最长子串,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 长度为 3。
示例 2:
输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 ,所以其长度为 1。
示例 3:
输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 ,所以其长度为 3。 请注意,你的答案必须是 子串 的长度, 是一个不是子串。
解题思路:
1,这是一个滑动窗口题目,需要移动左右指针
2,判断字符是否重复的题目,一般都用hashmap,用空间换时间
3,由于hashmap只需要表示字符存在不存在,可以用来存这个字符在串中的位置(从1开始),这是一个小技巧
4,如果字符没有出现过则右指针右移,长度增加
5,如果出现过,
A,如果出现的位置在左指针之前,记录当前位置到左指针的长度,并和最大长度比较(即左指针不移)
B,如果出现的位置在左指针之后,显然比当前长度短,就不用比较了,(即左指针移到上一次出现的位置的下一个地方)
6,更新hashmap中字符出现的位置为这一次最新出现的位置
写法1:
func lengthOfLongestSubstring(s string) int { m:=make(map[byte]int) res:=0 left:=0 for i:=0;i < len(s);i++{ if m[s[i]] >0 && left< m[s[i]]{ left= m[s[i]] } m[s[i]] = i + 1 if i-left+1>res{ res=i-left+1 } }return res}
写法2:
func lengthOfLongestSubstring(s string) int {
m:=make(map[byte]int)
res:=0
left:=0
for i:=0;i < len(s);i++{
if m[[]byte(s)[i]] == 0 || m[[]byte(s)[i]] < left{
res = max(res, i - left + 1)
} else {
left = m[s[i]]
}
m[s[i]] = i + 1
}
return res
}
func max(a,b int)int{
if a>b{
return a
}
return b
}
关于golang中怎么利用leetcode 实现一个无重复字符的最长子串就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
字符
长度
位置
指针
最长
示例
解释
输入
输出
内容
写法
更多
这是
题目
帮助
不错
最大
不用
兴趣
地方
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
平面广告设计图软件开发
数据库连接池大小配置
服务器显示后订书机的墨盒拨出
中国银行软件开发社会招聘
网络安全绘画素材眼睛
移动杯网络安全技能大赛
服务器拔电源重启才不卡
软件开发公司如何获利
互联网科技产业的发展
自学网络技术怎么样
网安大队检查机房网络安全
软件开发一二线城市工资多少钱
数据库学生选课
移动软件开发高职
上海智赢网络技术有限公司
甘肃庆阳网络安全会议
网络安全周2017
南京营销网络技术收费
国家网络安全宣传发布会
北京网络安全大会议题
加强涉密网络安全保护
密匙管理服务器名
关于网络安全的内容150字
网络技术应用主要学什么
关于软件开发的可行性报告
网络数据库服务器
系统开发难还是软件开发难
医疗机构网络安全运营的报告
个体户软件开发办公地址
软件开发计划图