剑指offer一刷 字符串之找出最长的无重复字符串并返回长度

找出最长的无重复字符串并返回长度

给定一个字符串,最长无重复字符串的长度

例子:“abc”, 返回3
例子:“wwabcdwf”,返回5
这里记录我的刷题思考,参考GitHub上的Jack_Cui的思路,原文地址:https://github.com/Jack-Cherish/LeetCode/blob/master/String/Medium/3.Longest%20Substring%20Without%20Repeating%20Characters.md
在这个解法里面,设置了longest记录最长字符串长度,left记录一个子字符串的长度的起始位置,temp{}字典用来存储当前已经遇见过的字符串
需要先写几个例子,梳理清楚规则

比如什么时候会重新开始计算,从起始位置开始,遍历字符,并记录存储,遇见了遍历过的字母就会开始重新计算,这个时候要把left位置进行更新
什么时候会不断进行对长度进行累加呢?
a、新的字符,以前没有遍历过的
b、以前遍历过,但是index在left点前面,可以视为新字符

在这里插入图片描述
注意这里为什么left = temp[each] + 1,因为需要对left位置进行不断准确更新,遇见重复元素,那么上一个重复元素就可以丢弃了,index +1进位计算

本文仅仅记录我的刷题理解和思考,感谢Jack Cui的分享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值