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

举报
小小谢先生 发表于 2022/04/15 23:51:18 2022/04/15
【摘要】 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。   示例 1: 输入: s = "abcabcbb" 输出: 3  解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s = "bbbbb" 输出: 1 解释: ...

题目描述:

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

 

示例 1:

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

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

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

输入: s = ""
输出: 0
 

思路分析:

一看到最长或是子串就要想到用滑动窗口,直接套上滑动窗口模板,然后再根据要求改改代码就行:

java实现:


  
  1. class Solution {
  2. public int lengthOfLongestSubstring(String s) {
  3. int len=s.length();
  4. int left=0,right=0,res=0;
  5. HashMap<Character,Integer> window=new HashMap<>();
  6. while(right<len){
  7. char r=s.charAt(right);
  8. right++;
  9. window.put(r,window.getOrDefault(r,0)+1);
  10. while(window.get(r)>1){
  11. char l=s.charAt(left);
  12. left++;
  13. window.put(l,window.getOrDefault(l,0)-1);
  14. }
  15. res=Math.max(res,right-left);
  16. }
  17. return res;
  18. }
  19. }

 

文章来源: blog.csdn.net,作者:小小谢先生,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/xiewenrui1996/article/details/113855139

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。