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

简介: 3. 无重复字符的最长子串

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

 

滑动窗口法

HashSet来判断重复字符  //.contains();

import java.util.HashSet;
import java.util.Set;
 
public class Q3 {
    public int lengthOfLongestSubstring(String s) {
        int maxLength = 0;
 
        //滑动窗口法
        Set<Character> occ = new HashSet<>();
        int rk = -1;//右指针
        for (int i = 0; i < s.length(); i++) {
            if (i != 0) {
                occ.remove(s.charAt(i-1));
            }
 
            //右移 右指针,直到集合出现重复字符
            while (rk+1 < s.length() && !occ.contains(s.charAt(rk+1))) {
                occ.add(s.charAt(rk+1));
                ++rk;
            }
            //更新maxLength
            if ((rk-i+1) > maxLength)
                maxLength = rk-i+1;
 
        }
        // end for
 
        return maxLength;
    }
}
相关文章
|
9月前
|
索引
LeetCode3-无重复字符的最长子串
LeetCode3-无重复字符的最长子串
|
18天前
|
存储 算法 数据挖掘
LeetCode 第三题:无重复字符的最长子串 详解 【3/1000】
LeetCode 第三题:无重复字符的最长子串 详解 【3/1000】
|
1月前
|
并行计算
求无重复字符的最长子串
求无重复字符的最长子串
|
1月前
|
存储 算法 Go
LeetCode 第三题: 无重复字符的最长子串
  给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。
|
1月前
leetcode-3:无重复字符的最长子串
leetcode-3:无重复字符的最长子串
24 0
|
1月前
leetcode:3. 无重复字符的最长子串
leetcode:3. 无重复字符的最长子串
20 0
|
1月前
3. 无重复字符的最长子串
3. 无重复字符的最长子串
25 0
|
9月前
无重复字符的最长子串
写一个if语句,当left小于right的时候,就写一个循环遍历从left下标开始的元素到right下标前面的元素,判断是否与right下标的元素相同,相同的话就跳出循环,令left 等于 与 right下标元素相同的元素后面的元素.怎么判断在left和right之间是否存在又和right相同的元素呢?这就用到了falg.如果left < right 的时候就让 right++; max = max = right - left + 1。
37 0
|
算法 Java Python
leetcode:3.无重复字符的最长子串
首先最容易想到的就是暴力解法,列出所有的子字符串,然后逐个检查是否包含重复的字符就行了,这样思路很简单,但是效率太慢,不推荐。
40 0
leetcode 3 无重复字符的最长子串
leetcode 3 无重复字符的最长子串
58 0
leetcode 3 无重复字符的最长子串