题目描述

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

题目描述:

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

示例 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<s.length();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;}
}

最后,欢迎点赞、收藏给个支持吧,如果有啥错误或者看法可以评论区留言哦!
欢迎关注微信公众号:bigsai ,回复打卡即可进群一起打卡力扣哦!

LeetCode精讲 03无重复字符的最长子串(滑动窗口)相关推荐

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

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

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

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

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

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

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

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

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

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

  6. (LeetCode刷题)Day03 无重复字符的最长子串

    无重复字符的最长子串 [3. Longest Substring Without Repeating Characters](https://leetcode.com/problems/longest ...

  7. leetcode 刷题 3. 无重复字符的最长子串解题思路

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

  8. 学渣的刷题之旅 leetcode刷题 3. 无重复字符的最长子串(暴力法、滑动窗口)

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

  9. (LeetCode)Java 求解无重复字符的最长子串

    文章目录 一.题解 二.代码 三.总结 一.题解 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因 ...

最新文章

  1. 深度好文 — 微服务和API网关限流熔断实现关键逻辑思路
  2. exe4j生成可执行程序的使用方法
  3. Clojure的学习笔记(二)
  4. 域名升级访问中拿笔记好_SEO优化中如何让你的页面访问速度更快
  5. SQL分割字符串详解
  6. 您无权查看或编辑目前的权限设置;但是,您可以取得所有权或更改审核设置
  7. 转:extjs里的fieldset不居中的解决办法(记录)
  8. mysql建帐号数据库出现反斜线_[MySQL FAQ]系列 -- 账号密码包含反斜线时怎么办-阿里云开发者社区...
  9. Mac下安装配置Tomcat 9, Homebrew安装Tomcat
  10. 如何快速查看Oracle的安装目录
  11. 无盘服务器什么意思,无盘网络是什么
  12. Centos7 Redhat7使用
  13. 概率论07 联合分布
  14. PDF文件中失效链接修改
  15. 计算机论文档案初探,[电子档案管理论文:档案计算机管理技术人才培训工作初探.doc...
  16. 如何引用维基百科Wikipedia
  17. matlab的求解方程组函数solve、dsolve、ode系列
  18. ATT格式汇编命令集合
  19. C++ Primer Plus(三)编程练习
  20. 如何成为一位数据科学家

热门文章

  1. PKI/CA (3)CA功能细分
  2. 数学建模——TOPSIS综合评价模型Python代码
  3. 2020 安恒七月赛
  4. Linux内核编码风格
  5. MFC C++ 获取外网IP地址
  6. 消息断点+内存断点定位窗口过程
  7. 2020-11-22(操作系统——页面置换算法)
  8. 2020-11-14(移位运算)
  9. 「安全技术」针对常见混淆技术的反制措施
  10. 【安全漏洞】某CMS后台防护逻辑漏洞导致GETSHELL