美文网首页LeetCode
leetCode3最大无重复字符的子串

leetCode3最大无重复字符的子串

作者: 丹青水 | 来源:发表于2018-07-20 11:00 被阅读0次

最长无重复字符的子串

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

示例:

给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。

给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。

给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列  而不是子串。

实现思路

初始化hashSet

设定左指针left和右指针right,right从左向右遍历

判断元素在hashSet容器是否存在,如果不存在,则将元素放在容器中,并且计算length的大小,和max比较取最大值

如果已经存在,则从将left指针移到当前元素,并且将该元素左边的全部元素移除

重复上面的判断,直到全部遍历

总体有种类似滑窗的设计思想,有左右两个手柄,一个先滑动,当遇到和之前相同的XX,后一个也移到此位置,想起让子弹飞的一句,他跑我就追~

具体实现

public class Solution {
    @Test
    public void testSubStr(){
        System.out.println(maxSubstring("12334"));
    }
    public int maxSubstring(String s) {
        int n = s.length();//数组大小
        Set<Character> set = new HashSet<>();
        int max = 0, left= 0, right = 0;
        while (left< n && right < n) {
            if (!set.contains(s.charAt(left))){//判断set集合中是否存在
                set.add(s.charAt(right++));//加到集合中
                max = Math.max(max, right - left);//取区间大的
            }
            else {
                set.remove(s.charAt(left++));//注意当出现重复元素的时候,该元素左边的数据全部移除,并且将left移到当前的元素位置。
            }
        }
        return max;
    }
}

相关文章

  • leetCode3最大无重复字符的子串

    最长无重复字符的子串 给定一个字符串,找出不含有重复字符的最长子串的长度。 示例: 实现思路 初始化hashSet...

  • 最长不含有重复字符的子串

    问题: 输入一组字符串,字符串中含有重复字符,求最大不重复的子字符串长度。 描述: 输入的字符串为 abcabcd...

  • [Leetcode] 3. 无重复字符的最长子串

    3. 无重复字符的最长子串 来源: 3. 无重复字符的最长子串 1. 解题思路 滑动窗口寻找最大字符串 2. 代码

  • 【python欢聚时代】计算重复字符串长度?

    题目:请从字符串中找出至少重复一次的子字符串的最大长度 输入描述: 字符串,长度不超过1000 输出描述: 重复子...

  • 最大连续子串的长度-动态规划

    描述 字符串的最大连续子串的长度,子串不能有重复字符,例如输入:"abcabcbb"输出:3 输入:"bbbbb"...

  • iOS面试题汇总---算法类

    字符串 【3】最长回文子串 【3】最长无重复子串 【1*】字符串转数字 【4】KMP 算法 【2】字符串全排列 【...

  • 最长不重复问题

    题目:求最长无重复子串从一个字符串中找到一个连续子串,该子串中任何两个字符不能相同,求子串的最大长度并输出一条最长...

  • Longest Substring Without Repeat

    题目:求最长无重复子串从一个字符串中找到一个连续子串,该子串中任何两个字符不能相同,求子串的最大长度并输出一条最长...

  • LeetCode3 无重复字符的最长子串

    这里主要是用到一个移动窗口的概念。窗口移动要解决的问题则是如果当前的字符已经重复了。那么接下来我的窗口的起始位置应...

  • LeetCode3(无重复字符的最长子串)

    题目: 解题思路 采用滑动窗口的方法来解决。从第一个字符开始循环,并把字符放到map中,如果 s[j]在 [i, ...

网友评论

    本文标题:leetCode3最大无重复字符的子串

    本文链接:https://www.haomeiwen.com/subject/plufmftx.html