3. Longest Substring Without Repeating Characters

    public int lengthOfLongestSubstring(String s) {
        if(s == null || s.length() == 0) return 0;
        char[] target = s.toCharArray();
        int tail, head;
        tail = 0;
        Map<Character, Integer> map = new HashMap<Character, Integer>();
        map.put(target[0], 0);
        int maxSubstringNum = map.size();
        for(head = 1; head < s.length(); head++) {
            if(map.containsKey(target[head])) {
                int tmp = map.get(target[head]);
                for(int i = tail; i <= tmp; i++) {
                    map.remove(target[i]);
                }
                tail = tmp + 1;
                map.put(target[head], head);
            }
            else {
                map.put(target[head], head);
            }
            if(map.size() > maxSubstringNum) {
                maxSubstringNum = map.size();
            }
        }
        return maxSubstringNum;
    }

 

posted @ 2016-09-09 14:20  ProWhalen  阅读(90)  评论(0编辑  收藏  举报