python输出不重复的子串

### Python 中获取不重复子串的算法 在 Python 中,可以通过滑动窗口技术来高效地解决无重复最长子串问题。这种方法的时间复杂度为 O(n),相较于暴力解法更加优化。 以下是基于滑动窗口方法的一个具体实现: #### 实现代码 ```python def length_of_longest_substring(s: str) -> int: char_index_map = {} # 字符到索引的映射表 max_length = 0 # 记录最大长度 start = 0 # 当前窗口起始位置 for i, char in enumerate(s): if char in char_index_map and char_index_map[char] >= start: start = char_index_map[char] + 1 char_index_map[char] = i current_window_length = i - start + 1 max_length = max(max_length, current_window_length) return max_length ``` 上述代码的核心逻辑在于维护一个动态调整的窗口范围 `start` 到当前字符的位置 `i`,并利用哈希表记录每个字符最近一次出现的位置[^4]。 如果发现某个字符已经存在于当前窗口范围内,则更新窗口起点至该字符上一次出现位置之后的第一个位置,从而确保窗口内的所有字符均唯一。 --- #### 示例运行 对于输入字符串 `"abcabcbb"`,执行过程如下: - 初始化:`char_index_map = {}`, `max_length = 0`, `start = 0` - 遍历第一个 `'a'` (`i=0`):加入哈希表 `{ 'a': 0 }`,计算窗口长度为 1。 - 遍历第二个 `'b'` (`i=1`):加入哈希表 `{ 'a': 0, 'b': 1 }`,计算窗口长度为 2。 - 遍历第三个 `'c'` (`i=2`):加入哈希表 `{ 'a': 0, 'b': 1, 'c': 2 }`,计算窗口长度为 3。 - 遍历第四个 `'a'` (`i=3`):检测到冲突,更新窗口起点为 `start = 1`,重新计算窗口长度为 3。 最终返回的最大长度为 3,对应子串为 `"abc"`。 --- #### 关键点解析 1. **滑动窗口的作用**:通过两个指针(`start` 和 `i`),可以有效地控制窗口大小,并实时更新最大值。 2. **哈希表的功能**:用于快速查询某字符是否已经在当前窗口中存在及其最后一次出现的位置。 3. **时间复杂度分析**:由于每个字符最多被访问两次(进入和移除窗口各一次),因此整体时间为线性级别 \(O(n)\)[^4]。 ---

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

Python内容推荐

python笔试例题(快速排序、二分查找、最长无重复子串、最长回文串长度、输出数组中两数相加=target的下标、用两.pdf

python笔试例题(快速排序、二分查找、最长无重复子串、最长回文串长度、输出数组中两数相加=target的下标、用两.pdf

python笔试例题(快速排序、二分查找、最长无重复子串、最长回文串长度、输出数组中两数相加=target的下标、用两

python 字符串操作(一)索引  切片

python 字符串操作(一)索引 切片

字符串定义 字符串是python中最常见的数据类型,创建字符串只需用引号括起来分配给一个变量即可,引号可以是单引号(’ ‘),双引号(“”),三引号(’’’ ‘’’)。 三引号与其他两种引号的区别是可以打印多行字符串。还有三引号也可以用做注释,前面写过。 字符串操作① 字符串可以用 运算符+ 号拼接 字符串 * 数字,达到重复字符串效果 字符串成员运算,判断特定值是否在字符串中,可以使用关键字in,not in 获取字符串长度可以使用内置函数len() 字符串操作② 索引 切片 索引,指字符串的位置,可以通过索引来提取字符串中的元素,python中,索引是从0开始由左到右,如果由

Python查找最长不包含重复字符的子字符串算法示例

Python查找最长不包含重复字符的子字符串算法示例

主要介绍了Python查找最长不包含重复字符的子字符串算法,涉及Python字符串遍历、统计相关操作技巧,需要的朋友可以参考下

Python利用正则表达式匹配并截取指定子串及去重的方法

Python利用正则表达式匹配并截取指定子串及去重的方法

主要介绍了Python利用正则表达式匹配并截取指定子串及去重的方法,涉及Python正则表达式匹配及字符串截取操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

Python入门学习之字符串与比较运算符

Python入门学习之字符串与比较运算符

主要介绍了Python入门学习之字符串与比较运算符,是Python语法中的基础知识,需要的朋友可以参考下

Python中英文词汇对照表(2020).pdf

Python中英文词汇对照表(2020).pdf

Python的强大以及广泛应用已成为人们的共识,目前Python已经广受数学科学、AI和脚本语言开发人员的欢迎。在过去5年,Python语言的流行性也不断增加。附上2020年Python面试题汇总及答案详解,助您求职无忧

Python入门指南.docx

Python入门指南.docx

Python是一种简单易学、功能强大的编程语言,广泛应用于数据分析、Web开发、人工智能等领域。本文将为初学者提供一个Python入门指南,从安装到基本语法,帮助您开始编写Python程序

蓝桥杯题库及答案 python编程版.docx

蓝桥杯题库及答案 python编程版.docx

蓝桥杯题库及答案 python 版 这是一道结果填空的题,只需要算出一 个整数作为结果提 交即可。 input_str=input()num=len(input_str)searched=[]foriinra nge(num):forjinrange(num):ifstr(input_str[j:j+i:])noti nsearched:searched.append(str(input_str[j:j+i:]))print (len(searched)) 输出结果为: 100 (2)年号字串小明用字母 A 对应数字 1,B 对应 2,以此类推,用 Z 对应 26。对于 27 以上的数字, 小明用两位或更长位的字符串来对应,例如 AA 对应 27,AB 对应 28,AZ 对应 52,LQ 对 329。请问 2019 对应的字符串是什么? 该题就是一个进制转换的问题,将十进制转换为 26 进制,因 为是 1~26,其中只有 26 个数,所以虽然是满 27 才进位,但 应该是转 26 进制。 string='ABCDEFGHIJKLMNOPQRSTUVWXYZ'num=2019

第十二届蓝桥杯Python组国赛试题.pdf

第十二届蓝桥杯Python组国赛试题.pdf

第十二届蓝桥杯Python组国赛试题.pdf 十二届蓝桥杯Python组国赛试题 第一题 * * 选择题严禁使用程序验证 设 s ='Hi LanQiao',运行以下哪个选项代码可以输出“LanQiao”子串( )。 A、print(s[-7:]) B、print(s[-6:-1]) C、 print(s[-7:0]) D、print(s[-7:-1]) 第二题 * * 选择题严禁使用程序验证 已知 a = 2021.0529,运行以下哪个选项代码可以输出“2021.05”( )。 A、print('{.2f}'.format(a)) B、print('{:.2f}'.format(a)) C、print('{.2}'.format(a)) D、print('{:.2}'.format(a)) 第三题 * * 选择题严禁使用程序验证 已知 pi=3.1415926,运行 print(round(pi),round(pi,2))语句,输出的结果是( )。 A、 3 3.14 B 、2 4 C、 3 6.18 D、3.14 3 第四题 * * 选择题严禁使用程序验证 运行以下程序,输出的结

Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】 <font color=red>原创</font>

Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】 <font color=red>原创</font>

主要介绍了Python字符串基本操作,结合实例形式总结分析了Python字符串的基本表示、运算、格式化输出、常用函数等,注释包含较为详尽的说明,便于理解,需要的朋友可以参考下

Python 去除字符串中指定字符串

Python 去除字符串中指定字符串

主要介绍了Python 去除字符串中指定字符串,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Python正则表达式的7个使用典范(推荐)

Python正则表达式的7个使用典范(推荐)

主要介绍了Python正则表达式的7个使用典范,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

2020年《python程序设计》基础知识及程序设计598题VH[含参考答案].pdf

2020年《python程序设计》基础知识及程序设计598题VH[含参考答案].pdf

。。。

Python 常用英文单词

Python 常用英文单词

Python 常用英文单词Python 常用英文单词 一、交互式环境与print输出 1、print:打印/输出 2、coding:编码 3、syntax:语法 4、error:错误 5、invalid:无效 6、identifier:名称/标识符 7、character :字符 二、字符串的操作 1、user:用户 2、name:姓名/名称 3、attribute:字段/属性 4、value:值 5、key:键 三、重复/转换/替换/原始字符串 1、upper:上面 2、lower:下面 3、capitalize:用大写字母写或印刷 4、title:标题 5、replace:替换 6、old:旧的 7、new:新的 8、count:计数 9、swap:互换 10、case:情形 11、path:路径 12、new:新的\新建 13、project:项目 14、test:测试

Python正则表达式和re库知识点总结

Python正则表达式和re库知识点总结

在本篇文章中小编给大家分享了关于Python正则表达式和re库知识点内容,有兴趣的朋友们学习下。

【Python入门学习】2.Python字符串相关操作“:查找、拼接、拆分、替换、判断等

【Python入门学习】2.Python字符串相关操作“:查找、拼接、拆分、替换、判断等

一. 字符串(String) 字符串通俗的说就是一串字符,是用来存储和表现文本信息的。在Python程序中,如果我们把单个或多个字符用单/双引号包围起来,就可以表示一个字符串。(Python3.6以上就不区分单/双引号) 从严格意义上来说,Python中的 字符串是就是由零个或多个字符组成的不可变序列。 序列中的元素包含一个从左到右的顺序——序列中的元素根据它们的相对位置进行存储和读取。其他类型的序列还包括列表和元组(其他篇章会进行详细介绍)。 Python字符串是一种字符序列,所以着它具备序列类型都支持的操作(其他篇章会详细介绍序列的操作): # s为一个序列,t为一个序列,x代表元素 x

用python写的关键字查找程序

用python写的关键字查找程序

搜索指定目录树下匹配了关键字列表的所有文件 包含了一个遍历目录树的类,稍加修改可实现其他功能 python初学者可以通过代码看看怎么遍历目录树,以及命令行参数的解析

南开大学2021年9月《Python编程基础》作业考核试题及答案参考3.docx

南开大学2021年9月《Python编程基础》作业考核试题及答案参考3.docx

南开大学2021年9月《Python编程基础》作业考核试题及答案参考3.docx

python中的real函数-RealPython基础教程:Python字符串用法详解.pdf

python中的real函数-RealPython基础教程:Python字符串用法详解.pdf

python中的real函数_RealPython基础教程:Python字符串⽤ 法详解 字符串是⼀个由字符数据组成的序列。字符串处理是编程必备的技能,很少有应⽤程序不需要操作字符串的。 Python 提供了丰富的运算符、函数和类⽅法来操作字符串。 通过本⽂,你将了解如何访问字符串以及提取字符串的⼦串,并熟悉⽤于操作和修改字符串数据的⽅法。 我们也会向你介绍 Python 中另外两种表⽰裸字节数据的对象:bytes 和 bytearray。 【字符串操作】 下边,我们将着重介绍⽤于字符串操作的运算符、类⽅法和函数。 1,字符串运算符 在《Python 运算符和表达式》⼀⽂中,我们已经在算术运算中使⽤过 + 和 * 运算符。这两个运算符不仅适⽤于数字操作数,它们也可⽤于 字符串。 + 运算符⽤于连接字符串,它返回⼀个由所有操作数连接在⼀起的字符串。>>> s = 'foo'>>> t = 'bar'>>> u = 'baz'>>>>>> s + t'foobar'>>> s + t + u'foobarbaz'>>>>>> print('Go team' + '!!!')Go team!

PTA 7-29 删除字符串中的子串

PTA 7-29 删除字符串中的子串

PTA 7-29 删除字符串中的子串

最新推荐最新推荐

recommend-type

该数据集收录了国内主要期货商品和股指指数的日频行情 商品期货覆盖有色、黑色、能化、农产品等板块,包含铜、螺纹钢、原油、豆粕等活跃合约 股指指数部分涵盖沪深300、上证50、中证500等品种 每个品种提

该数据集收录了国内主要期货商品和股指指数的日频行情。商品期货覆盖有色、黑色、能化、农产品等板块,包含铜、螺纹钢、原油、豆粕等活跃合约。股指指数部分涵盖沪深300、上证50、中证500等品种。每个品种提供统一字段:合约代码、交易日期、开盘价、最高价、最低价、收盘价、结算价、成交量和持仓量。数据按交易日顺次排列,未做复权处理,直接反映交易所原始发布信息。 数据源:CMES金融数据库
recommend-type

KernelSU.zip

KernelSU.zip
recommend-type

产业园区在推动科技成果转化过程中,如何实现企业与高校的精准对接?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。
recommend-type

项目实战:用西门子S7协议开发基于PLC的上位机.pdf

项目实战:用西门子S7协议开发基于PLC的上位机.pdf
recommend-type

产业园区运营负责人如何精准匹配产业需求与科技成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。
recommend-type

Ansoft与Matlab结合构建无线系统仿真平台

"本文主要探讨如何利用Ansoft公司的高级软件,如HFSS和Ensemble,以及MATLAB的各种工具箱,构建一个通用的无线系统仿真平台。这个平台能够涵盖从天线设计、射频电路仿真、频率合成到基带信号处理等整个无线系统的仿真任务,以优化系统设计和参数选择。文章指出,随着新器件、新工艺和新技术的快速发展,EDA软件在设计流程中的作用越来越重要,可以缩短研发周期。无线系统通常由天馈、射频收发、频率源和基带处理等部分组成,而软件无线电技术使得基带处理可以基于通用硬件。然而,在设计初期,系统各模块的仿真至关重要。Ansoft软件擅长电磁场分析、电路仿真和信号完整性分析,而MATLAB则提供丰富的信号处理工具箱和系统仿真模块Simulink,两者结合能实现全系统仿真。" 在无线系统设计中,Ansoft的HFSS是用于三维电磁场分析的工具,能够进行天线单元的选择和优化,以及馈电网络的设计和分析。Ensemble则适用于平面电路的仿真,而Serenade和Siwave则分别处理系统级仿真和高速电路的信号完整性问题。MATLAB作为强大的数学计算和数据处理环境,集成了多种专业工具箱,如信号处理工具箱、通信工具箱等,可以处理基带信号处理的所有仿真任务。Simulink模块进一步增强了系统级别的模型建立和仿真能力。 通过将Ansoft软件的强大电磁和电路仿真功能与MATLAB的信号处理和系统仿真能力相结合,设计者可以创建一个全面的无线系统仿真框架,如图1所示。这个通用平台允许设计者在设计早期阶段就进行参数选取和可行性验证,对各个模块进行独立仿真,然后进行全系统集成,确保所有组件协同工作,从而优化系统性能,降低设计风险,并减少实物原型的制作和测试次数。 利用Ansoft软件和MATLAB构建的无线系统通用仿真平台,不仅可以提高设计效率,还可以在设计过程中提供详尽的分析和指导,确保无线系统设计的准确性和高效性。这样的综合仿真方法已经成为现代雷达和通信技术发展中不可或缺的一部分。
recommend-type

面向SRE的Prompt可观测性:日志埋点×延迟热力图×token级归因分析(Prometheus+Grafana+PromptTracer全链路部署手册)

# SRE视角下的Prompt可观测性:从黑盒监控到因果归因的工程跃迁 在某头部券商的智能投研平台上线前夜,SRE团队遭遇了典型的LLM服务“幽灵故障”:`/v1/chat/completions`接口整体P95延迟稳定在1.8秒,完全符合SLO(2.0秒),但高频用户投诉“响应卡顿、流式中断”。传统监控系统显示一切正常——HTTP成功率99.99%,GPU利用率63%,显存占用率71%。直到一位工程师偶然打开vLLM的`nvidia-smi dmon`输出,才捕捉到一个微小却致命的信号:`sm__inst_executed`(SM指令执行数)每32个token出现一次周期性尖峰,峰值达基线
recommend-type

SolidWorks装配体怎么转成ROS能用的URDF文件?

### 如何在 SolidWorks 中导出 URDF 模型用于机器人仿真 为了使SolidWorks创建的机械设计能够被应用于机器人仿真环境中,可以利用特定工具来完成从SolidWorks到通用机器人描述格式(URDF)的转换。这一过程涉及到了解如何配置和使用`sw_urdf_exporter`插件。 #### 安装 sw_urdf_exporter 插件 对于希望将SolidWorks模型转化为适用于仿真的URDF文件而言,ROS社区提供了一个名为`sw_urdf_exporter`的辅助软件[^3]。此插件允许用户通过简单的图形界面操作实现复杂的模型转化工作。获取该工具的方法是从官方
recommend-type

电子商务产品分类大全

"电子商务产品分类(1).doc" 文件提供了电子商务平台上的主要产品分类和推荐品牌,涵盖了多个行业和商品类型。 在电子商务领域,产品分类是至关重要的,它有助于消费者快速定位并找到所需商品,同时也方便商家管理和推广。这份文档列举了如下几大类别的产品: 1. **图书、电子书刊、音像制品**:包括各种类型的图书,如文艺、少儿、人文社科、经管励志、生活、科技、教育、工具书等,推荐的品牌或出版商有磨铁图书、上海世纪出版股份有限公司、人民文学出版社等知名出版机构。 2. **家用电器**:主要分为大家电、生活电器、厨房电器、个人护理和健康电器等类别,推荐的品牌可能包括市场上的主流品牌。 3. **手机数码**:包括手机通讯、运营商、手机配件、摄影摄像、数码配件等,这通常涉及各大手机制造商和配件供应商。 4. **电脑、办公**:涵盖电脑整机、电脑配件、外设产品、网络产品、办公打印和办公文仪等,推荐的品牌可能包括知名的电脑和办公设备品牌。 5. **家具、家装**:包括厨具、家纺、家具、灯具、生活用品、清洁用品以及家装建材等,这一部分涉及到家居生活的各个方面,品牌推荐可能包括各类家居品牌。 6. **服饰、鞋帽**:这是电子商务中最常见的商品之一,包括不同风格和用途的服装、鞋子和帽子。 这些分类不仅帮助消费者根据自身需求进行筛选,也反映出电子商务市场的多元化。每个类别下的“√”符号可能表示该类别是电子商务平台上的热门或者主要类别。此外,推荐的品牌或厂家列表对于消费者来说是一个有价值的参考,他们可以根据这些信息选择信誉良好的品牌进行购买。 通过这份文档,我们可以了解到电子商务平台的产品结构和市场趋势,这对于电商平台的运营者、商品供应商以及消费者来说都具有很高的参考价值。同时,对于想要进入电商行业的创业者,了解这些分类可以帮助他们更好地规划产品线和市场定位。
recommend-type

【企业级Prompt治理白皮书V2.3】:千人千面业务下统一资产_版本_权限_灰度的4步落地法(已支撑日均2.4亿次调用)

# Prompt治理的范式跃迁:从临时脚本到企业级数字资产 在某头部银行的智能投顾平台,一个用于生成客户资产配置建议的Prompt,在GPT-4o上线后第三天突然开始频繁输出“请咨询人工客服”——不是因为模型坏了,而是因为一位工程师在调试另一个营销文案生成任务时,误将自己本地IDE里写的一段测试用`system prompt`复制进了共享配置库。这个看似微小的操作,导致风控中台、信贷审批、财富管理三条核心业务线的AI服务在17分钟内集体降级。更讽刺的是,当SRE团队紧急回滚时,发现Git历史里根本找不到那次“修改”:它被混在一条合并了23个Jupyter Notebook变更的PR里,连提交