关注、在看,回复进群打卡

题目描述

题目描述:

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

示例 1:

输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

分析

此题就是给一个字符串让你找出最长没有重复的一个字串。 要搞清子串和子序列的区别:

  • 子串:是连续的,可以看成原串的一部分截取。

  • 子序列:不一定是连续的,但是要保证各个元素之间相对位置不变。

处理思路?

  • 暴力查找,暴力查找当然是可以的,但是复杂度过高这里就不进行讲解了。

本题选择的思路是滑动窗口,滑动窗口,就是用一个区间从左往右,右侧先进行试探,找到区间无重复最大值,当有重复时左侧再往右侧移动一直到没重复,然后重复进行。在整个过程中找到最大的那个空间返回即可。

但是在Java编程语言中如何操作呢?

  • 定义一个leftright,表示滑动的区间。初始均为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无重复字符的最长子串(滑动窗口)相关推荐

  1. LeetCode精讲 03无重复字符的最长子串(滑动窗口)

    题目描述 原创作者:bigsai,维护不易,如有收获,还请点赞.收藏支持! 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcb ...

  2. python输入多个字符串、输入最长的一串_无重复字符的最长子串(Python之暴力求解)...

    无重复字符的最长子串(Python之暴力求解) 例题: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例: (1) 输入: "abcabcbb" 输出: 3 ...

  3. 无重复字符的最长子串php,LeetCode - 无重复字符的最长子串 - Golang

    题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 `"abc ...

  4. 滑动窗口技术-最大无重复字符问题(暴力,滑动窗口,动态规划)

    leetcode 第三题,最长无重复的字串 返回一个字符中最大无重复字符的长度 1.暴力求解 2.线性滑动左右指针 3.跳跃滑动左指针 暴力求解忽略 线性滑动左右指针: public int leng ...

  5. LeetCode 03. 无重复字符的最长子串

    原题链接 解题思路: (双指针扫描) O(n),双指针主要作用是维护一段区间 定义两个指针 i,j(i<=j),表示当前扫描到的子串是 [i,j] (闭区间).扫描过程中维护一个哈希表unord ...

  6. php无重复字符的最长子串,PHP算法之无重复字符的最长子串

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...

  7. python字符串中最长的连续升序子串_Leetcode刷题练Python无重复字符的最长子串

    这是一道字符串处理算法的题目,在日常编程中,处理字符串是常见任务.该题目会涉及到一个概念"滑动窗口". 一.题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度 ...

  8. 无重复最长子串python_leetCode 无重复字符的最长子串 python(Longest Substring Without Repeating Characters) python...

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. Default 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &quo ...

  9. python学习3. 无重复字符的最长子串(滑动窗口)

    makcooo 2019-04-19 15:47:32  271  收藏 分类专栏: python 版权 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: &quo ...

最新文章

  1. OpenCL™(开放计算语言)概述
  2. 计算机网络各种传输介质说明
  3. 设计基于MAX1240,MAX5353的ADDC模块STC8G1KSOP8
  4. 源码分析SharePreferences的apply与commit的区别
  5. oracle v$system_event,45.Oracle杂记——Oracle常用动态视图v$system_event
  6. 【struts2】struts2中的Action详解
  7. jquery插件dataTables自增序号。
  8. Android studio ERROR: Software caused connection abort: recv failed 解决方法
  9. java long 二进制输出格式_算法:java打印int类型的二进制格式
  10. 【GCC调试程序C语言问题】对‘ceil’未定义的引用/已经包含头文件仍然提示未定义的引用
  11. linux中config文件怎么打开,linux-如何使用CoreOS的cloud-config文件启动Dock...
  12. java公司薪酬管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  13. depmod 生成 modules.dep
  14. 网络中使用最多的图片格式有哪些
  15. 米勒拉宾素性检验(代码模板)
  16. Go select chan操作
  17. 【NLP】第16章 使用RNN 和注意力的自然语言处理
  18. Oracle分析函数PERCENTILE_CONT
  19. python画五角星
  20. configure: error: Support for POSIX ACLs is required

热门文章

  1. 《STL源码剖析》学习--6章--_rotate算法分析
  2. Visual Studio 2010或者2012上安装VASSISTX
  3. 《Effective-Ruby》读书笔记
  4. Spring(5)——Spring 和数据库编程
  5. 《Effective C++》读书笔记(第一部分)
  6. 编程之美-从无头单链表中删除节点方法整理
  7. 递归算法学习系列之八皇后问题
  8. 【python图像处理】图像的增强(ImageEnhance类详解)
  9. VS2015 MFC属性页孙鑫笔记
  10. 结队作业,小学生3年级数学题出题器