题目描述

原创作者:bigsai,长期维护不易,如有收获还请点赞、收藏支持!

题目描述:

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

示例 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;i1) {                a[s.charAt(l++)]--;            }             if(i-l+1>max)                 max=i-l+1;         }         return max;    }}

最后,欢迎关注点赞、收藏给个支持吧!持续分享哦

JAVA窗口sin值_大厂经典笔试题—LeetCode03无重复字符的最长子串(滑动窗口)相关推荐

  1. python最长连续子串_LeetCode 03无重复字符的最长子串(滑动窗口)

    关注.在看,回复进群打卡 题目描述 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为 ...

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

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

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

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

  4. LeetCode 3. 无重复字符的最长子串 (滑动窗口哈希表)

    3. 无重复字符的最长子串 题意: 找子串 子串中无重复字符 要求子串长度最长 解法1(暴力法) 思路: 建立一个长度不断变小的滑动窗口 用一个指针指针扫描窗口内的每个元素: 如果除去指针指向的那个元 ...

  5. Leetcode刷题100天—3. 无重复字符的最长子串(滑动窗口+集合+双指针)—day21

    前言: 作者:神的孩子在歌唱 大家好,我叫运智 3. 无重复字符的最长子串 难度中等6009收藏分享切换为英文接收动态反馈 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. 示例 ...

  6. python经典算法题:无重复字符的最长子串

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

  7. 最长不重复子串python_python经典算法题:无重复字符的最长子串

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

  8. c++ 数组的输入遇到特定字符停止输入_滑动窗口思维--挑战“无重复字符的最长子串”

    文章来源: 饭饭的Python学习之路 作者: 一粒米饭 今天要挑战的是"无重复字符的最长子串". 难度:中等 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 ...

  9. 汇编语言求无符号数组中出现的次数最多数_【今日最佳leecode通俗易懂】无重复字符的最长子串...

    相信看了这个标题的同学,对这道题以已经非常不陌生了,就是leecode当中的第三题,之所以要单独的写一写主要对我来说,里面涉及到有一个滑动窗口, 散列表, 字符编码等知识点比较重要,也有几个小技巧,这 ...

最新文章

  1. 使用String()解决utf-8字符转GB2312的问题
  2. nginx 转将http跳转到https
  3. [裴礼文数学分析中的典型问题与方法习题参考解答]4.3.15
  4. mac环境mongodb安装与配置
  5. Java之ThreadPoolExcutor和四种常见的线程池
  6. 那些牛逼的数据分析师,SQL用的到底有多溜
  7. java重写的代码_java tostring方法重写代码示例
  8. 机器学习笔记-基于逻辑回归的分类预测
  9. python和opencv人脸表情识别_使用OpenCV和Python进行人脸识别
  10. eclipse-memory-analyzer使用说明
  11. 安卓10不支持qmc解码_国产定制ROM玩烂了的功能,最新安卓11原生系统确定不支持...
  12. 主分区损坏diskgenius_Diskgenius硬盘分区表坏了不要紧 用软件三步就能修复
  13. 《此生未完成读书总结》
  14. 转换句子的首字母为大小写(Jaden Casing Strings)
  15. 2021数据库MYSQL语句梳理(Navicat)
  16. 关于uni-app中SegmentedControl 分段器不显示的问题
  17. 利用PE安装ISO镜像(以及精简版镜像)/安装忍术渗透系统
  18. Python爬虫之从网站图片中抓取文字
  19. 转贴: 人应该为自己而活
  20. 软件测试工程师如何优雅的“甩锅”

热门文章

  1. 计算机硬件系统设计mooc,计算机硬件系统设计MOOC答案
  2. php tp 重加载页面,thinkPHP线上自动加载异常与修复方法实例分析
  3. python教程:getattr函数和hasattr函数的用法
  4. python3输入的input()坑
  5. Python scrapy 命令行传参 以及发送post请求payload参数
  6. python运行时间的两种方法
  7. Python属性和内建属性
  8. python中函数的括号使用
  9. linux 不同进程间能否传递指针?(不能,虚拟地址进程私有,被不同进程映射到物理地址不同)
  10. MAKEWORD(2,2)解释