LeetCode题解(0003):字符串中无重复字符的最长子串(Python)
发布日期:2021-06-29 19:51:34
浏览次数:3
分类:技术文章
本文共 912 字,大约阅读时间需要 3 分钟。
题目:(中等)
标签:字符串、双指针、哈希表、滑动窗口
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( N 2 ) O(N^2) O(N2) | O ( N ) O(N) O(N) | 3356ms (>5.01%) |
Ans 2 (Python) | O ( N ) O(N) O(N) | O ( N ) O(N) O(N) | 44ms (>99.97%) |
解法一(分别计算以每个字为起点的最长无重复子串):
def lengthOfLongestSubstring(self, s: str) -> int: ans = 0 for i in range(len(s)): hashset = set() sub_ans = len(s) - i for j in range(len(s[i:])): if s[i:][j] in hashset: sub_ans = j break hashset.add(s[i:][j]) if sub_ans > ans: ans = sub_ans return ans
解法二(分别判断以每个字为结束的最长无重复子串;即遇到重复的字符,则判断是否移动起始下标的位置):
def lengthOfLongestSubstring(self, s: str) -> int: ans = 0 hashmap = { } # 距离当前位置最近的字符坐标 now = 0 # 当前长度 for i, ch in enumerate(s): now += 1 if ch in hashmap: now = min(now, i - hashmap[ch]) hashmap[ch] = i ans = max(ans, now) return ans
转载地址:https://dataartist.blog.csdn.net/article/details/106742480 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月14日 03时54分09秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Vue学习笔记之路由组件传参
2019-04-30
Vue学习笔记之路由导航守卫
2019-04-30
Vue学习笔记之路由元信息
2019-04-30
Vue学习笔记之路由过渡动效
2019-04-30
Vue学习笔记之路由数据获取
2019-04-30
Vue学习笔记之路由滚动行为
2019-04-30
Vue学习笔记之路由懒加载
2019-04-30
Vue学习笔记之混入 (mixin)
2019-04-30
Vue学习笔记之自定义指令
2019-04-30
Vue学习笔记之Vuex学习---Vuex 是什么?
2019-04-30
Vue学习笔记之Vuex的核心概念State
2019-04-30
Vue学习笔记之Vuex的核心概念Getter
2019-04-30
Vue学习笔记之Vuex的核心概念Mutation
2019-04-30
Vue学习笔记之Vuex核心概念Action
2019-04-30
Vue学习笔记之Vuex的核心概念Module
2019-04-30
JavaScript数据结构与算法学习笔记之数组
2019-04-30
JavaScript数据结构与算法学习笔记之单链表
2019-04-30
JavaScript数据结构与算法学习笔记之双向链表(2)
2019-04-30
JavaScript数据结构与算法学习笔记之双向链表(1)
2019-04-30
JavaScript数据结构与算法学习笔记之双向链表(3)
2019-04-30