LeetCode-3. 无重复字符的最长子串
【摘要】
题目描述:
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 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实现:
-
class Solution {
-
public int lengthOfLongestSubstring(String s) {
-
int len=s.length();
-
int left=0,right=0,res=0;
-
HashMap<Character,Integer> window=new HashMap<>();
-
-
while(right<len){
-
char r=s.charAt(right);
-
right++;
-
window.put(r,window.getOrDefault(r,0)+1);
-
-
while(window.get(r)>1){
-
char l=s.charAt(left);
-
left++;
-
window.put(l,window.getOrDefault(l,0)-1);
-
}
-
res=Math.max(res,right-left);
-
}
-
return res;
-
}
-
}
文章来源: blog.csdn.net,作者:小小谢先生,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/xiewenrui1996/article/details/113855139
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)