Longest Substring no Repeat Characters

今天的题目是第3题,medium难度.
longest substring without repeating charactersgiven a string, find the length of the longest substring without repeating characters.
example 1:
input: abcabcbboutput: 3 explanation: the answer is abc, with the length of 3.example 2:
input: bbbbboutput: 1explanation: the answer is b, with the length of 1.example 3:
input: pwwkewoutput: 3explanation: the answer is wke, with the length of 3.note that the answer must be a substring, pwke is a subsequence and not a substring.3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: abcabcbb输出: 3 解释: 因为无重复字符的最长子串是 abc, 所以其长度为3。示例 2:
输入: bbbbb输出: 1解释: 因为无重复字符的最长子串是 b,所以其长度为1。示例 3:
输入: pwwkew输出: 3解释: 因为无重复字符的最长子串是 wke,所以其长度为3。请注意,你的答案必须是 子串 的长度,pwke是一个子序列,不是子串。my answer:
首先对于查询是否存在的操作我们选择用dict来做(hash速度快), 对整个字符串进行遍历 用dict字典中存储已经访问过的数据. 对于未存在于dict中的元素直接添加key:value为s[i]:i; 当遇到已经存在的元素更新start的位置为dict[s[i]]的下一位, 因为dict中的值仍然保留start之前的数元素, 所以遇到的存在元素未必是有效的, 需要对start的更新值进行判断start = max(start, dct[s[i]] + 1). 最后更字典和最大长度即可.
class solution: def lengthoflongestsubstring(self, s: str) -> int: start = 0 max_len = 0 dct = {} for i in range(len(s)): if s[i] in dct: start = max(start, dct[s[i]] + 1) dct[s[i]] = i max_len = max(max_len, i - start+1) return max_len

压电晶体
超高压插件陶瓷电容的特点及作用
简述访问电源参考设计库的理由
MEMS传感器在移动设备上的3大关键应用
GE发布人工智能分析工具集应对电网运营难题
Longest Substring no Repeat Characters
喜讯!赛昉科技通过上海市“专精特新”企业认定
做工对得起2999元售价吗?一加5完全拆解
魅族MX7要来了! 黄章亲自发布, 联发科X30顶级理器!
IAP编程page0返回失败的问题总结
AI外呼机器人都这么卷了吗?思必驰发音人音色自训练平台助力
一文解析液压系统溢流阀的作用是什么
深度解读嵌入式微控制器应用的OTA更新
揭秘LED灯具光衰原因
荣耀V40系列新机型更多配置细节曝光
Acrich专利诉讼与专利许可双管齐下
小米全球扩张与对手竞争加剧,专利困扰急需解决
中国机器人产业发展迅猛,产业规模不断扩大
宜家此次宣布召回的克里普索吸顶灯
dsp芯片虚焊的原因及解决方法