建设自己的二手房中介网站,能不能模仿百度一样做搜索引擎网站,理财网网站开发源码h5,淄博网站排名优化报价给定一个字符串 s #xff0c;请你找出其中不含有重复字符的最长子串 的长度 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”#xff0c;所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”请你找出其中不含有重复字符的最长子串 的长度 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”所以其长度为 1。 示例 3: 输入: s “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”所以其长度为 3。 请注意你的答案必须是子串的长度“pwke” 是一个子序列不是子串。 来源力扣LeetCode 链接https://leetcode.cn/problems/longest-substring-without-repeating-characters 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。
采用滑动窗口法
分析 i0
j0
max0abcabcbb
ij{a:1b:1
}max
return max代码实现
class Solution(object):def lengthLongest(self, s):# 定义左右指针left 0right 0# 定义最大值max 0# 定义字典存储当前字符串window dict()# 当右指针滑到头时结束循环while right len(s):# right指向的字符串位置current_char s[right] # 第一次a# .setdefault()# 如果键不存在字典中将会添加键并将值设为默认值0window.setdefault(current_char, 0)window[current_char] 1 # 相当于把a定义成1# 往后走1位right 1# 窗口中有重复的字符串时缩小窗口while window[current_char] 1:left_char s[left]# i往右移动1位left 1# 更新字典中current_char的数量window[left_char] - 1# 临时获取字符串的长度window_size right - leftif window_size max:max window_sizereturn maxs pwwkewsolution Solution()
res solution.lengthLongest(s)
print(res)