美文网首页
滑动窗口法

滑动窗口法

作者: 机方尼 | 来源:发表于2019-11-30 19:54 被阅读0次

题目:给定一个字符串,找出其中不含重复字符最长子串的长度


题目分析:题意为字符串中不含重复字符的子串,也就是子串必须是给定字符串中连续的。

例如:给定字符串“abacad”那么最长子串为“bac”或"cad"而不是“abcd”。

滑动窗口法可以解决字符串/数组 子串的问题,可以将嵌套的循环问题转换为单循环问题,降低时间复杂度。

image

使用窗格圈出字符串中无重复字符的每个子串,比较子串长度。

上代码:

public int longestSubstring(String s){
  //定义字符串长度,返回结果,窗口左边界,窗口右边界
  int n = s.length(), res = 0, left = 0, right = 0;
  //定义存放元素位置的map
  Map<Character, Integer> map = new HashMap<Character, Integer>();
  while(left < n && right < n){
    if(map.containsKey(s.charAt(j))){
                i=Math.max(i, map.get(s.charAt(j))+1);//如果包含key的话,将移动窗口的左边界调整为重复数字的下一个位置;
            }
            map.put(s.charAt(j), j);//更新重复出现元素的value值
            ans = Math.max(ans, j-i+1);
            j++;
  }
}

相关文章

  • 滑动窗口法

    题目:给定一个字符串,找出其中不含重复字符的最长子串的长度 题目分析:题意为字符串中不含重复字符的子串,也就是子串...

  • 438. 找到字符串中所有字母异位词

    一 题目: 二 思路: 滑动窗口法 将p数组长度作为滑动窗口大小 每个窗口内的值为字符以及其数量 注意,每次窗口移...

  • LeetCode之滑动窗口法详解

    一 滑动窗口 滑动窗口法(sliding window)常用于输入为数组,输出为统计满足特定约束条件的子串次数的情...

  • Algorithm进阶计划 -- 滑动窗口

    滑动窗口算法滑动窗口框架滑动窗口运用 1. 滑动窗口框架 滑动窗口算法,核心思路是维护一个窗口,不断滑动,然后更新...

  • 剑指offer-滑动窗口的最大值-JavaScript

    题目描述:给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 示例: 解法 1:暴力法 ...

  • TCP可靠传输理论;流量控制;拥塞控制

    滑动窗口、超时重传、选择确认SACK 滑动窗口 滑动窗口:发送窗口、接收窗口。发送窗口内的数据都可以发送,在收到新...

  • 643-子数组最大平均数 I

    求长度为 k 的子数组的最大平均值,滑动窗口法,保持窗口大小为 k,进行滑动。 用累加数组来计算,对于子数组求和问...

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

    主要用到了滑动窗口算法两个指针之间就代表是一个滑动窗口,滑动窗口必须保证没有重复元素,同时保留最大的滑动窗口的大小...

  • 数组

    二分法,快排序,归并28327268088215对撞指针12534434511双索引技术,滑动窗口209343876

  • Flutter-BottomSheet(底部滑动窗口)

    BottomSheet(底部滑动窗口) ModalBottomSheet(对话框式底部滑动窗口) BottomSh...

网友评论

      本文标题:滑动窗口法

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