leetcode top 100 (8)无重复字符的最长子串(滑动窗口

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

示例 1:

复制代码
输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
java 复制代码
package TOP1_10;

import java.util.HashMap;
import java.util.Map;

/**
 * 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
 * <p>
 * <p>
 * <p>
 * 示例 1:
 * <p>
 * 输入: s = "abcabcbb"
 * 输出: 3
 * 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
 */
public class Top8 {

    //采用滑动窗口,用一个hash表记录字符串出现最新位置,当出现重复值时候,左指针移动到原新加入字符串位置的右边一个的位置
    private static int getLargeSizeString(String data) {
        Map<Character, Integer> charMap = new HashMap<>();
        int i = -1;
        int maxSize = 0;
        for (int j = 0; j < data.length(); j++) {
            if (charMap.containsKey(data.charAt(j))) {
                i = charMap.get(data.charAt(j));
            }
            charMap.put(data.charAt(j), j);
            maxSize = Math.max(j - i, maxSize);
        }
        return maxSize;
    }

    public static void main(String[] args) {
        String data = "dasjdkajdsaasg";
        System.out.println(getLargeSizeString(data));
    }
}
相关推荐
YYuCChi18 分钟前
代码随想录算法训练营第三十七天 | 52.携带研究材料(卡码网)、518.零钱兑换||、377.组合总和IV、57.爬楼梯(卡码网)
算法·动态规划
不能隔夜的咖喱41 分钟前
牛客网刷题(2)
java·开发语言·算法
VT.馒头41 分钟前
【力扣】2721. 并行执行异步函数
前端·javascript·算法·leetcode·typescript
进击的小头1 小时前
实战案例:51单片机低功耗场景下的简易滤波实现
c语言·单片机·算法·51单片机
咖丨喱2 小时前
IP校验和算法解析与实现
网络·tcp/ip·算法
罗湖老棍子3 小时前
括号配对(信息学奥赛一本通- P1572)
算法·动态规划·区间dp·字符串匹配·区间动态规划
fengfuyao9853 小时前
基于MATLAB的表面织构油润滑轴承故障频率提取(改进VMD算法)
人工智能·算法·matlab
机器学习之心3 小时前
基于随机森林模型的轴承剩余寿命预测MATLAB实现!
算法·随机森林·matlab
一只小小的芙厨3 小时前
寒假集训笔记·树上背包
c++·笔记·算法·动态规划
庄周迷蝴蝶3 小时前
四、CUDA排序算法实现
算法·排序算法