当前位置: 首页 > news >正文

算法题——给定一个字符串 s ,请你找出其中不含有重复字符的最长子串 的长度

给定一个字符串 s ,请你找出其中不含有重复字符的最长子串 的长度

示例 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

采用滑动窗口法

分析:

'''
i=0
j=0
max=0abcabcbb
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 = "pwwkew"solution = Solution()
res = solution.lengthLongest(s)
print(res)
http://www.lryc.cn/news/39920.html

相关文章:

  • 机器学习中的数学原理——F值与交叉验证
  • vue.js介绍
  • 【设计模式】1、设计模式七大原则
  • 【前端老赵的CSS简明教程】10-1 CSS预处理器和使用方法
  • BFC详解
  • C++:哈希结构(内含unordered_set和unordered_map实现)
  • Java实现调用第三方相关接口(附详细思路)
  • 基础数据结构:单链表
  • 基于51单片机的智能计算器Protues仿真设计
  • Pandas数据分析实战练习
  • C++ 继承下(二篇文章学习继承所有知识点)
  • 【C++】C++11新特性——类的改进|lambda表达式
  • C语言进阶(37) | 程序环境和预处理
  • Golang每日一练(leetDay0005)
  • occt_modeling_data(一)——拓扑
  • 【AcWing】蓝桥杯备赛-深度优先搜索-dfs(3)
  • 宇宙最强-GPT-4 横空出世:最先进、更安全、更有用
  • HashMap的实际开发使用
  • OpenCV入门(十三)快速学会OpenCV 12 图像梯度
  • 软考:常见小题目计算题
  • 【Linux】进程的程序替换
  • 【C++】模板(上)
  • express框架利用formidable上传图片
  • 测试背锅侠?入职软件测试后大d佬给我丢了这个bug分类分析,至今受益匪浅......
  • STM32 OTA应用开发——通过内置DFU实现USB升级(方式1)
  • 基于MFC的JavaScript进行网页数据交互
  • AUTOSAR-Fee
  • Linux基本命令——操作演示
  • 【Linux】目录和文件的权限
  • Unity 优化之Player Setting