LeetCode题——最长无重复子串

题目

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。如:
输入: “abcbabcd”
输出: 4
解释: 因为无重复字符的最长子串是 “abcd”,所以其长度为 4。

思路

一开始容易往暴力遍历的方向想,但是实际上运用窗口的思想就很容易解决。无重子串的定义是连续且各异的字符,需要满足连续,而起止位置不定,长度是随着起止位置变化的,因而想象为一个可以左右浮动宽度变化的窗口,这个窗口包含的字符就是所要的串。为了保证窗口不出现重复字符,可以将窗口后的下一位(图中虚线框)与窗口(图中实线框)内的已有字符遍历比较,无相同可直接将窗口下一位纳入,扩大窗口,而出现相同则需要由前削减窗口(图中点线框),窗口起始位置(start)移动到重复字符的下一位,再将窗口下一位纳入。由图可见这是个窗口终止位置(end)递增的过程,终止条件是窗口终止位置(end)到达最后一个字符(strlen()-1)。
在这里插入图片描述

代码

#include<stdio.h>
#include<string.h>int main()
{char *p = new char[512]{};int ret = scanf("%s", p);int start = 0, end = start - 1, lenmax = end - start + 1, i;//lenmax为最大窗口长度int maxSubstringStart = 0, maxSubstringEnd = 0;while (end != strlen(p)-1){//默认无重bool redundant = false;for (i = start; i <= end; i++){if (p[end + 1] == p[i]){//有重redundant = true;break;}}if (redundant){//由前削减窗口start = i + 1;end++;}else{//往后扩大窗口end++;int len = end - start + 1;//当前窗口长度if (lenmax < len){lenmax = len;maxSubstringStart = start;maxSubstringEnd = end;}}}//结果输出for (int i = 0; i < strlen(p); i++){if (maxSubstringStart <= i&&i <= maxSubstringEnd){putchar(p[i]);continue;}putchar(' ');}printf("\n");printf("%d\n", lenmax);delete[] p;return 0;
}

样例

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

透视世界人工智能发展

来源&#xff1a;参考消息、新华网摘要&#xff1a;当今世界&#xff0c;随着人工智能迎来新一轮发展热潮&#xff0c;一个“新智能时代”即将到来。世界大国都把加快发展人工智能上升至国家战略高度&#xff0c;以抢占新一轮科技革命和产业变革的制高点。“透视世界人工智能发…

半导体行业必将再火十年!两大趋势成发展新动能

来源&#xff1a;智东西看点&#xff1a;汽车半导体和人工智能芯片为半导体市场带来了新的发展机遇。当前&#xff0c;我们使用的许多前沿数字化设备背后的技术都要依靠半导体才能实现。 由于无人驾驶、人工智能、5G和物联网等新兴技术的发展&#xff0c;以及对技术研发的持续投…

batch批处理程序easyadd——追加单行文本到指定txt文件末尾

介绍 有时候需要打开记事本在末尾追加文本&#xff0c;如果手动找到txt文件&#xff0c;再打开txt文件&#xff0c;按 ctrlhome 到达文末&#xff0c;才能完成对txt文件的追加&#xff0c;比较繁琐。而且如果txt文件很大&#xff08;比如词典文件&#xff09;&#xff0c;手动…

短信备份(原)

昨天在学习回调的时候&#xff0c;发现了其独特的魅力之处&#xff0c;它将业务代码逻辑和我们的工具类耦合性大大降低了。 应用场景&#xff1a;在实际开发中&#xff0c;经常会随着用户的需求的改变而对对话框的样式进行相应修改&#xff0c;在短信的备份过程中&#xff0c;往…

今年的谷歌I/O大会,或许会有这些东西

来源 | 网易科技据国外媒体报道&#xff0c;当地时间5月7日&#xff0c;2019年度谷歌I/O开发者大会将在加州的海岸线圆形剧场(Shoreline Amphitheater)举行。届时&#xff0c;包括谷歌首席执行官桑达尔皮查伊(Sundar Pichai)等公司高管将登台发表演讲。谷歌将在本届开发者大会上…

贪吃蛇C语言

有趣的小游戏&#xff0c;实现关键点有光标移动&#xff0c;按键检测&#xff0c;状态转移&#xff0c;随机数生成等。欢迎讨论&#xff01; #include<stdio.h> #include<windows.h> #include<time.h> #include<conio.h>#define UP w #define DOWN s…

全球及美国首张无人机配送商业化“驾照”先后落地,国内还要多久?

来源&#xff1a;智能相对论&#xff08;aixdlun&#xff09;前不久&#xff0c;美国首张无人机配送“驾照”正式落地&#xff0c;获得者还是之前在澳大利亚拿下全球首张无人机商业飞行许可的谷歌。最早提出无人机配送的亚马逊被谷歌两次捷足先登&#xff0c;贝佐斯心里一定不好…

IBM的医疗AI为何失败

来源&#xff1a;陆志方科学网博客最近&#xff0c;看到一篇关于医疗AI的文章《IBM医疗AI宣告失败&#xff0c;率先入局却踏步不前》。1997年IBM深蓝战胜国际象棋世界冠军卡斯帕罗夫&#xff0c;名声大噪&#xff1b;2011年开始&#xff0c;IBM在医疗AI押上重注&#xff0c;此后…

机器学习加深了“知识”和“理解”之间的鸿沟

来源&#xff1a;36氪无法理解人工智能“黑箱”&#xff0c;人工智能就能帮我们理解世界吗&#xff1f;编者按&#xff1a;机器学习和互联网意味着海量数据和复杂的联系&#xff0c;同时也意味着人类无法理解的运行过程——人工智能的“黑箱”是近期学界热议的一个话题&#xf…

德国人工智能战略

来源&#xff1a;中国工业和信息化德国联邦政府为了进一步发展和应用人工智能&#xff0c;根据当前的人工智能战略&#xff0c;建立了一个整体的政策框架。首先&#xff0c;联邦政府考虑了人工智能技术的快速发展&#xff0c;以及由新人工智能技术驱动的全球生产和价值链变化。…

一文看懂70年的人工智能简史

来源&#xff1a;techjury【导读】如果从阿兰图灵1943年首次提出“图灵机”的概念算起&#xff0c;AI已经经历了86年的发展史。本文以信息图的形式回顾了这70多年的标志性事件&#xff0c;并归纳出AI发展的几个方向和技术应用&#xff0c;以及10大AI企业和国家排行榜。这篇AI“…

Django中间件与python日志模块 介绍

一、Django中间件 1.1 介绍 Django中的中间件是一个轻量级、底层的插件系统&#xff0c;介于request与response处理之间的一道处理过程&#xff08;用来处理特定业务的请求和响应&#xff09;。中间件的设计为开发者提供了一种无侵入式的开发方式&#xff0c;增强了Django框架…

无人系统自主性研究综述

来源&#xff1a;人机与认知实验室一、引言2012年7月&#xff0c;美国国防科学委员会发布了《自主性在国防部无人系统中的地位》&#xff0c;进一步指出自主能力是美军无人系统中的核心能力&#xff0c;分析了自主能力给无人机(UAV)、无人地面系统(UGS)、无人海上平台(UMV)和无…

一文看尽微软开发者大会 让AI和云驱动一切

来源 | 网易智能一年一度的微软开发者大会Build 2019在美国华盛顿州雷德蒙德拉开帷幕&#xff0c;微软公司CEO萨提亚纳德拉&#xff08;Satya Nadella&#xff09;介绍和发布了一系列全新技术&#xff0c;并在现场展示了以客户为中心的智能体验全新解决方案。微软此次发布的新功…

爬虫文档学习 xpath bs4 selenium scrapy...

爬虫 一、介绍 1、什么是爬虫 1.1 爬虫(Spider)的概念 爬虫用于爬取数据&#xff0c; 又称之为数据采集程序。 爬取的数据来源于网络&#xff0c;网络中的数据可以是由Web服务器&#xff08;Nginx/Apache&#xff09;、数据库服务器(MySQL、Redis)、索引库&#xff08;Ela…

用人工神经网络控制真实大脑,MIT的科学家做到了

来源&#xff1a;网络大数据三位研究者分别是 MIT 大脑与行为科学系主任 James DiCarlo、MIT 博士后 Pouya Bashivan 和 Kohitij Kar。相关论文发表在 5 月 2 日 Science 的网络版上。论文链接&#xff1a; http s://www.biorxiv.org/content/10.1101/461525v1研究人员表示&…

学习卫星菜单

学会坚持的自己写的底部中间菜单 转自http://www.cnblogs.com/persist-confident/p/4487386.html 看了hyman老师的视频&#xff0c;听起来有点迷糊&#xff0c;所以就想把实现卫星菜单的实现总结一下。长话短说&#xff0c;下面总结一下&#xff1a; 一、自定义ViewGroup1&…

Python 的垃圾回收回收机制(源码)

python内存管理及垃圾回收 1. 引用计数器 1.1 环状双向连表 refchain 在python程序中创建的任何对象都会放在refchain链表中&#xff0c;并且可以通过这个对象访问到上一个和下一个对象。 name 张三 age 18 hobby [美女,吃饭]内部会建立一些数据 -打包 C语言叫做结构体-…

未来五年人工智能将实现的五大突破

来源&#xff1a;资本实验室不论是可以和你对话的智能音箱&#xff0c;还是能够自己作画的虚拟艺术家&#xff1b;不论是能够帮助农民准确判断种植和施肥时间的农场管理系统&#xff0c;又或者是能够在演唱会现场快速识别罪犯的人脸识别程序&#xff0c;人工智能已经开始在各行…

python面试常问

一、Python基础部分 1. 数据类型 数字类型(Numbers)&#xff1a; 整数(int), 浮点数(float), 复数(complex) 布尔(Booleans)&#xff1a; True和False 字符串(Str)&#xff1a;Uniconde字符序列, 在引号内包含 列表(list)&#xff1a; 有序的值的序列 元组(Tuples)&#x…