Longest Substring Without Repeating Characters
来源:互联网 发布:淘宝折扣app哪个好 编辑:程序博客网 时间:2024/06/15 08:10
leetcode第三题,要求寻找一个最长不重复连续子串。
最最简单的想法就是双重循环进行遍历,为了提高效率,可以在第二层循环中做文章,可以使用模拟hash来记录使用过的字符,也可以使用python内置的in方法,还可以使用字典来记录,不过这些方法都有一个问题,那就是复杂度都是o(n2),测试数据中有一个很长的字符串,时间不能满足要求。
size = len(s)maxlen = 0for i in range(size):counter = 1j = 0visit = {}visit[s[i]] = 1for j in range(i+1,size):if s[j] not in visit:counter += 1else:if counter > maxlen:maxlen = counterbreakif j == size-1 and counter>maxlen:maxlen = counter
有没有一种方法可以一遍循环就解决问题呢?分析一下,双重循环是因为需要寻找以每一个字符为开头的子串,这些子串都有可能成为最长不重复连续子串,在寻找过程中,如果碰到重复字母,则这个子串内无论是从哪一个位置开始都不会最大不重复长度都不会超过从start开始的长度,此时立刻终止该子串的查询,记录一下长度是不是最长的,而后接着搜索以下一个字符开头的子串。
class Solution(object): def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ start = 0 maxlen = 0 charused = {} size = len(s) for i in range(size): if s[i] in charused and start <= charused[s[i]]: start = charused[s[i]]+1 else: maxlen = max(maxlen,i-start+1) charused[s[i]] = i return maxlen
0 0
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- dTree组件的学习
- fragment里面的startActivityForResult(保存状态不成功的问题)
- Hibernate使用SQL进行查询
- (皇后移动类)八数码难题引发的搜索思考及总结
- 最长公共子序列Java代码实现
- Longest Substring Without Repeating Characters
- HDU 1232 畅通工程 入门并查集 附大牛讲解
- (餐饮项目)餐桌缓存菜品总金额(Service实现)
- C# 托管资源和非托管资源
- javascript中的定时方法
- Hadoop在linux系统下的集群时间同步
- Volley源码学习
- C++11新特性之新类型与初始化
- hdu1281棋盘游戏(二分图匹配+枚举)