当前位置: 代码迷 >> 综合 >> 每天一道leetecode:3 无重复字符的最长字串(medium)
  详细解决方案

每天一道leetecode:3 无重复字符的最长字串(medium)

热度:53   发布时间:2023-12-14 15:08:23.0

这道题真的。。。。。

花费了大量时间,可能思路不对,中间出了一堆bug

比如:bbbb、tvxt、tvtvtvt等等等,一堆都在出错,最后搞出来一个版本,结果血崩,到了最后的案例没通过。。。

没办法,只好重新做了,肯定是里面的for循环有问题,那么就不能这样搞了

重做了一遍,还好,成功了。

class Solution:def lengthOfLongestSubstring(self, s: str) -> int:if len(s) == 0:return 0if len(s) == 1:return 1if len(s) == 2:if s[0] == s[1]:return 1else: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 = 0num = 0sum_len = 0for i in a:# 指代现在数的下表num = num + 1# 说明从未出现过if b[i] == 0:# 长度加len1 = len1 + 1b[i] = num#print(len1)#print('b[i]---')#print(b[i])# 如果出现过,那么这个时候b[i]的值为下标else:if sum_len<len1:sum_len = len1if 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任务完成啦,因为下午和晚上都有课,啦啦啦

快到大中午啦,一道题浪费了好多时间,哭哭,滚去写论文了,?

  相关解决方案