剑指offer字符串
本帖最后由 波大大12138 于 2021-8-12 16:06 编辑题目:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。
py代码如下:
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
head = 0
tail = 0
if len(s) < 2:
return len(s) # 边界条件
res = 1
while tail < len(s) - 1:
tail += 1
if s not in s:
res = max(tail - head + 1, res)
else:
while s in s:
head += 1
res = max(tail - head + 1, res)
return res
问题:这是别人代码,利用滑动窗口,双指针做,我的问题出在while s in s:这句代码我之前自己写的时候没要这句,因为我觉得if判断条件,要不就在其中,要不就不在就这两种啊,为啥删了就不对?
错误示例:"pwwkew" 正确返回3,我删了返回4? 对于pwwkew当
head = 0, tail = 2时,如果没有while s in s这句判断的话只会让head加一次1变成1
但是正确思路是要保证head到tail之间始终不存在重复字符所以要加上while s in s使得head变成2
你的想法只能保证每次重复的字符只出现在head处时的情况比如acbdacbd lei1996 发表于 2021-8-12 17:33
对于pwwkew当
head = 0, tail = 2时,如果没有while s in s这句判断的话只会让head加 ...
理解了,谢谢,是我思路问题
页:
[1]