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

无重复字符的最长子串(3)

3. 无重复字符的最长子串 - 力扣(LeetCode)

解法:

class Solution {
public:int lengthOfLongestSubstring(string s) {int result = 0;int left = 0;int right = 0;//题目中说s由英文字母、数字、符号和空格组成int ascii_set[128] = {0};for (; right < s.size(); ++right) {if (ascii_set[s[right]] == 1) {for (;left < right; ++left) {ascii_set[s[left]] = 0;if (s[left] == s[right]) {++left;break;}}}ascii_set[s[right]] = 1;result = max(result, right - left + 1);}    return result;}
};

总结:

算法关键,双指针,left和right构成一个window。计算时间复杂度,遍历一遍数组需要O(N)的时间,由于每一个window最多是128个字符(无重复),所以第2个for循环不超过128,所以时间复杂度为O(N)。空间复杂度就是128的数组,常数,所以O(1)。

从实现上来看使用hash map 还是数组记录已经扫过的字符,经过比较,在leetcode上实验,数组的计算效率比hash map快1个数量级以上。

相关文章:

  • 第三章 - 软件质量工程体系
  • JAVA在线考试系统考试管理题库管理成绩查询重复考试学生管理教师管理源码
  • QTtricks
  • 神经网络开发实战:从零基础到企业级应用(含CNN、RNN、BP网络代码详解)
  • 开源PDF解析工具Marker深度解析
  • Python-numpy中ndarray对象创建,数据类型,基本属性
  • 2025年企业Radius认证服务器市场深度调研:中小企业身份安全投入产出比最优解
  • 基于CBOW模型的词向量训练实战:从原理到PyTorch实现
  • MySQL基础关键_008_DDL 和 DML(一)
  • 杰理-AC696音箱linein无法插入检测
  • 【C++】grpc(一):安装
  • 探索神经符号系统:医疗AI的范式化进程分析
  • Cursor报错Your request has been blocked解决方案
  • SpringBoot集成CXF框架,实现WebService
  • 数据结构中 数组、链表、图的概念
  • 从围棋到LabVIEW:快速入门与长期精通
  • Python中的客户端和服务端交互的基本内容
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的流量变现路径创新研究
  • Web前端开发:Flex布局(弹性布局)
  • 物联网之对接MQTT最佳实践
  • 习近平将对俄罗斯进行国事访问并出席纪念苏联伟大卫国战争胜利80周年庆典
  • 巴菲特股东大会十大金句:未来五年内可能有投资机会,快乐的人活得更久
  • 3:0战胜日本队,中国羽毛球队挺进2025苏迪曼杯决赛
  • 魔都眼|西岸国际咖啡生活节:连接艺术、音乐与宠物
  • 李铁案二审驳回上诉,维持一审有期徒刑20年的判决
  • 中国人保聘任田耕为副总裁,此前为工行浙江省分行行长