leetcode-3、无重复字符的最长子串(c++)

博客探讨了LeetCode第3题的解决方案,即寻找给定字符串中无重复字符的最长子串。文章介绍了整体思路,包括使用两个变量temp和result来存储子串,并通过遍历字符串来更新这两个变量。同时,文章还记录了解题过程中遇到的问题及错误尝试,最后展示了通过测试的C++代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

leetcode-3、无重复字符的最长子串(c++)

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

示例1

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

示例2

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

示例3

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

整体思路:

1、定义两个变量temp,result。变量temp用来临时存储没有重复元素的子串,result用来存储当前最大长度且没有重复元素的子串。
2、遍历给定字符串s,如果s[i]在字符串temp中已存在,则删除temp中从下标0到s[i]重复元素区间的子串。再将s[i]添加到temp中。
3、如果s[i]在字符串temp中已存在,在删除temp中从下标0到s[i]重复元素区间的子串之前,先判断temp的长度是否比result大,如果是,则将temp的元素赋给result.
4、由于对应解可能在给定字符串s的尾部,返回值时返回temp、result中长度较长的变量。

代码:
<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值