zoukankan      html  css  js  c++  java
  • Leet Code 3.无重复字符的最长子串

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

    题解

    提交代码

    public static int lengthOfLongestSubstring(String s) {
            int n = s.length(), ans = 0;
            Map<Character, Integer> map = new HashMap<>();
    
            for(int j = 0, i = 0; j < n; j++){
                if (map.containsKey(s.charAt(j))) {
                    i = Math.max(i, map.get(s.charAt(j)));
                }
    
                    ans = Math.max( j - i + 1 , ans);
                    map.put(s.charAt(j), j + 1);
            }
            return ans;
        }
    

    提交代码的思路:以一个滑动窗口来判断最长子串,用HashMap判断是否子串有重复字符,若有,则改变左窗口。以O(n)的时间复杂度和O(n)的空间复杂度得出结果。

    • 其中HashMap为<Character,Integer>
  • 相关阅读:
    07组合,模版
    06享元、责任链
    05观察,命令
    04代理,迭代器
    03单例,策略
    02工厂,创建者
    01基础
    css随记02布局
    css随记01编辑技巧,背景与边框
    nodejs随记03
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/12269976.html
Copyright © 2011-2022 走看看