给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
滑动窗口题解过程
时间复杂度:O(n)
java代码 :
private static int lengthOfLongestSubstring(String s) { int ans = 0; Map<Character, Integer> map = new HashMap<>(); for (int left = 0,i = 0; i < s.length(); i++) { char alpha = s.charAt(i); if (map.containsKey(alpha)) { left = Math.max(map.get(alpha) + 1, left); } ans = Math.max(ans, i - left + 1); map.put(alpha, i); } return ans; }