每天一道leetecode:3 无重复字符的最长字串(medium)
程序员文章站
2022-07-14 08:03:06
...
这道题真的。。。。。
花费了大量时间,可能思路不对,中间出了一堆bug
比如:bbbb、tvxt、tvtvtvt等等等,一堆都在出错,最后搞出来一个版本,结果血崩,到了最后的案例没通过。。。
没办法,只好重新做了,肯定是里面的for循环有问题,那么就不能这样搞了
重做了一遍,还好,成功了。
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
if len(s) == 0:
return 0
if len(s) == 1:
return 1
if len(s) == 2:
if s[0] == s[1]:
return 1
else:
return 2
# 首先将字符串转化为数组
a = []
for c in s:
a.append(ord(c)-ord('a'))
#print(a)
# [0, 1, 2, 0, 1, 2, 1, 1]
b = {}
for c in s:
b[ord(c)-ord('a')] = 0
#print(b)
len1 = 0
num = 0
sum_len = 0
for i in a:
# 指代现在数的下表
num = num + 1
# 说明从未出现过
if b[i] == 0:
# 长度加
len1 = len1 + 1
b[i] = num
#print(len1)
#print('b[i]---')
#print(b[i])
# 如果出现过,那么这个时候b[i]的值为下标
else:
if sum_len<len1:
sum_len = len1
if len1 >= num - b[i]:
len1 = num - b[i]
else:
len1 = len1 + 1
#print(len1)
b[i] = num
#print('b[i]')
#print(b[i])
if sum_len<len1:
sum_len = len1
#print(sum_len)
return sum_len
突然发现,有时候做题出了思路外,还有一定的运气成分,可能某一方面你的思路没错,换一种方式可能就会节省很多时间。
上午提前把leetecode任务完成啦,因为下午和晚上都有课,啦啦啦
快到大中午啦,一道题浪费了好多时间,哭哭,滚去写论文了,????