码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode]3 Longest Substring Without Repeating Characters

时间:2015-01-02 16:16:01      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:leetcode

https://oj.leetcode.com/problems/longest-substring-without-repeating-characters/

http://fisherlei.blogspot.com/2012/12/leetcode-longest-substring-without.html


public class Solution {
    public int lengthOfLongestSubstring(String s) {
        
        if (s == null || s.isEmpty())
            return 0; // invalid input
            
        // A map of [char, position]
        Map<Character, Integer> map = new HashMap<>();
        
        char[] chars = s.toCharArray();
        int len = chars.length;
        
        int start = 0;
        int end = 0;
        int maxLen = -1;
        for (; end < len ; end ++)
        {
            char c = chars[end];
            Integer lastPos = map.get(c);
            if (lastPos == null)
            {
                map.put(c, end);
                int curLen = end - start + 1;
                if (curLen > maxLen)
                    maxLen = curLen;
            }
            else
            {
                // Clear all chars <= lastPos, including c.
                // Then update c with end.
                // reset start = lastPos + 1;
                for (int i = start ; i <= lastPos ; i ++)
                {
                    map.remove(chars[i]);
                }
                start = lastPos + 1;
                map.put(c, end);
            }
        }
            
        if (maxLen == -1) // All chars are the same. return 1.
            return 1;
        
        return maxLen;
    }
}


[LeetCode]3 Longest Substring Without Repeating Characters

标签:leetcode

原文地址:http://7371901.blog.51cto.com/7361901/1598391

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!