美文网首页
算法(1)最大不重复子串

算法(1)最大不重复子串

作者: 来搞事情 | 来源:发表于2018-09-15 09:50 被阅读0次

LeetCode 算法题,最大不重复子串


问题

使用滑动窗口办法解决:
窗口有两个坐标,start(i)和end(j),起初start=end,end++,判断s[end]是否在s[0]到s[end-1]这里面,如果存在并且下标大于start的话,就将start滑动到相等的那个值下标加一的位置。

static int solution(String str){
        int n = str.length();
        //用hashmap保存key对应的下标,因为start要取下一个值,所以保存的下标加一
        HashMap<Character,Integer> map = new HashMap<>();
        int i = 0, j = 0, ans = 0;
        for (j = 0; j < n; j++){
            if (map.containsKey(str.charAt(j))){
                i = Math.max(i,map.get(str.charAt(j)));
            }
            //插入新值或者将旧值更新成新值
            map.put(str.charAt(j), j + 1);
            ans = Math.max(ans, j - i + 1);
        }
        return ans;
    }

还有一种滑动窗口,使用HashSet保存查询过的值,当出现重复值的时候,移除start处元素,然后start+1,相当于窗口向前滑动一位。

static int solution(String str){
        int i = 0, j = 0,ans = 0;
        int n = str.length();
        HashSet set = new HashSet<>();
        while(i < n && j < n){
            if(set.contains(str.charAt(j))){
                set.remove(str.charAt(i++));
            }else{
                set.add(str.charAt(j++));
                ans = Math.max(ans,j - i);
            }
        }
        return ans;
    }

相关文章

  • 文章收藏

    iOS面试题系列之常见算法 排序算法整理 字符串【3】最长回文子串【3】最长无重复子串【1*】字符串转数字【4】K...

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

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

  • 算法(1)最大不重复子串

    LeetCode 算法题,最大不重复子串 使用滑动窗口办法解决:窗口有两个坐标,start(i)和end(j),起...

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

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

  • leetcode-动态规划

    1668. 最大重复子字符串[https://leetcode-cn.com/problems/maximum-r...

  • 2022-04-18 LeetCode刷题

    1668. 最大重复子字符串[https://leetcode-cn.com/problems/maximum-r...

  • 中文分词的方法

    1、基于字符串匹配的方法 1.1 正向最大匹配分词算法1.2 逆向最大匹配分词算法1.3 双向最大匹配分词算法1....

  • 算法-字符串之最长无重复子串

    算法字符串系列的第四篇文章,计算给定字符串的最长无重复子串。 这篇文章主要介绍两种方法,一种是基于hash的思想,...

  • 【leetcode3】 3. Longest Substrin

    关键字:最长不重复子串、双指针 难度:Medium 题目大意:求一个字符串最长不重复子串的长度 题目: Given...

  • 面试题2

    四、数据结构和算法 1、求一串数字序列中的连续子串最大和,比如arr=1 -2 3 -1 2,连续子串最大和就是3...

网友评论

      本文标题:算法(1)最大不重复子串

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