Leetcode: 3. Longest Substring Without Repeating Characters

这题一开始我理解错了。后来自己去解也没完成,看了参考,看了半天没懂为什么,虽然代码短,但是逻辑性很高~

解题思想:设置滑动窗口

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class Sum22 {
    public static void main(String[] args) {
        Sum22 sum4 = new Sum22();
        String s = "qwyrwkew";
        sum4.lengthOfLongestSubstring(s);
    }

    public int lengthOfLongestSubstring(String s) {
        if (s.length() == 0)
            return 0;
        HashMap<Character, Integer> map = new HashMap<Character, Integer>();
        int max = 0;
        for (int i = 0, j = 0; i < s.length(); ++i) {
            if (map.containsKey(s.charAt(i))) {
                j = Math.max(j, map.get(s.charAt(i)) + 1);   //如果不用取大操作,那么abba,在遍历到a时,j的值为0,此时应该为1才对
            }
            map.put(s.charAt(i), i);
            max = Math.max(max, i - j + 1);
        }
        return max;
    }

}
原文地址:https://www.cnblogs.com/Michael2397/p/8034715.html