python最长连续子串_LeetCode 03无重复字符的最长子串(滑动窗口)
关注、在看,回复进群打卡
题目描述
题目描述:
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
分析
此题就是给一个字符串让你找出最长没有重复的一个字串。 要搞清子串和子序列的区别:
子串:是连续的,可以看成原串的一部分截取。
子序列:不一定是连续的,但是要保证各个元素之间相对位置不变。
处理思路?
暴力查找,暴力查找当然是可以的,但是复杂度过高这里就不进行讲解了。
本题选择的思路是滑动窗口,滑动窗口,就是用一个区间从左往右,右侧先进行试探,找到区间无重复最大值,当有重复时左侧再往右侧移动一直到没重复,然后重复进行。在整个过程中找到最大的那个空间返回即可。
但是在Java编程语言中如何操作呢?
定义一个
left
和right
,表示滑动的区间。初始均为0.定义一个max
表示最长初始为0.right
往右移动,同时记录易懂经过元素的个数。当遇到重复即存在该元素的时候暂停。比较这个长度(right-left+1)与max的大小,max是否需要更新。接着
left
往右移动,同时移动途中将出现字母的词数减一。直到移动到right位置相同字母的右侧说明当前窗口没有重复序列了,继续循环执行到结束。
当然,最长的情况也在其中,因为我们只要不重复right就会右移,不能移的时候前一个即可能是最大长度:
你可能会问,用什么存储这个词数呢?
哈希当然可以啦,你可以用HashMap存储记录这个值进行维护,就是可能偶尔稍微麻烦一点。
因为咱们知道字符char
它底层是一个ASCII,是一个数值,我们可以创建一个int数组直接把ASCII值作为数组对应下表进行处理,这样虽然占了点内存但是使用起来方便很多。
ac代码
附上ac 代码:
class Solution { public int lengthOfLongestSubstring(String s) { int a[]=new int[500];
int max=0; int l=0; for(int i=0;i { a[s.charAt(i)]++; while (a[s.charAt(i)]>1) { a[s.charAt(l++)]--; } if(i-l+1>max) max=i-l+1; } return max; }}
最后,欢迎点赞、收藏给个支持吧,如果有啥错误或者看法可以评论区留言哦!
最近往期精彩回顾:
json从立地到成佛
Thymeleaf一篇就够了
两分钟真能搞懂桶排序
SpringMVC文件上传下载
学弟不懂原码反码补码,气的我给女朋友讲了一夜
LeetCode 01两数之和&02两数相加
欢迎关注微信公众号:bigsai
,回复打卡
即可进群一起打卡力扣哦!
python最长连续子串_LeetCode 03无重复字符的最长子串(滑动窗口)相关推荐
- LeetCode精讲 03无重复字符的最长子串(滑动窗口)
题目描述 原创作者:bigsai,维护不易,如有收获,还请点赞.收藏支持! 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcb ...
- python输入多个字符串、输入最长的一串_无重复字符的最长子串(Python之暴力求解)...
无重复字符的最长子串(Python之暴力求解) 例题: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例: (1) 输入: "abcabcbb" 输出: 3 ...
- 无重复字符的最长子串php,LeetCode - 无重复字符的最长子串 - Golang
题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 `"abc ...
- 滑动窗口技术-最大无重复字符问题(暴力,滑动窗口,动态规划)
leetcode 第三题,最长无重复的字串 返回一个字符中最大无重复字符的长度 1.暴力求解 2.线性滑动左右指针 3.跳跃滑动左指针 暴力求解忽略 线性滑动左右指针: public int leng ...
- LeetCode 03. 无重复字符的最长子串
原题链接 解题思路: (双指针扫描) O(n),双指针主要作用是维护一段区间 定义两个指针 i,j(i<=j),表示当前扫描到的子串是 [i,j] (闭区间).扫描过程中维护一个哈希表unord ...
- php无重复字符的最长子串,PHP算法之无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...
- python字符串中最长的连续升序子串_Leetcode刷题练Python无重复字符的最长子串
这是一道字符串处理算法的题目,在日常编程中,处理字符串是常见任务.该题目会涉及到一个概念"滑动窗口". 一.题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度 ...
- 无重复最长子串python_leetCode 无重复字符的最长子串 python(Longest Substring Without Repeating Characters) python...
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. Default 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &quo ...
- python学习3. 无重复字符的最长子串(滑动窗口)
makcooo 2019-04-19 15:47:32 271 收藏 分类专栏: python 版权 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: &quo ...
最新文章
- OpenCL™(开放计算语言)概述
- 计算机网络各种传输介质说明
- 设计基于MAX1240,MAX5353的ADDC模块STC8G1KSOP8
- 源码分析SharePreferences的apply与commit的区别
- oracle v$system_event,45.Oracle杂记——Oracle常用动态视图v$system_event
- 【struts2】struts2中的Action详解
- jquery插件dataTables自增序号。
- Android studio ERROR: Software caused connection abort: recv failed 解决方法
- java long 二进制输出格式_算法:java打印int类型的二进制格式
- 【GCC调试程序C语言问题】对‘ceil’未定义的引用/已经包含头文件仍然提示未定义的引用
- linux中config文件怎么打开,linux-如何使用CoreOS的cloud-config文件启动Dock...
- java公司薪酬管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
- depmod 生成 modules.dep
- 网络中使用最多的图片格式有哪些
- 米勒拉宾素性检验(代码模板)
- Go select chan操作
- 【NLP】第16章 使用RNN 和注意力的自然语言处理
- Oracle分析函数PERCENTILE_CONT
- python画五角星
- configure: error: Support for POSIX ACLs is required