首页 > 其他 > 详细

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

时间:2020-02-06 21:24:48      阅读:94      评论:0      收藏:0      [点我收藏+]
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。

题解

提交代码

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>

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

原文:https://www.cnblogs.com/chenshaowei/p/12269976.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!