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

3. Longest Substring Without Repeating Characters

时间:2016-04-10 09:08:36      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

/*
     * 3. Longest Substring Without Repeating Characters 
     * 2016-4-10 by Mingyang
     * 这里用Hashmap来存每一个出现的字符的位置,并且设置一个start来记录长度
     * 每次如果遇到了重复,如果重复的前面那个出现在了start以后,我们需要更新start,
     * 如果出现在了start以前,我们就不需要更新
     * 比图case abba,出现第三个a的时候不需要把start变为第一个a的下一个
     * 另外,start<=map.get(tem)是小于等于,省去等于就过不去aa这个case
     */
    public static int lengthOfLongestSubstring(String s) {
        int len=s.length();
        if(s==null||len==0)
          return 0;
        int res=0;
        int start=0;
        HashMap<Character,Integer> map=new HashMap<Character,Integer>();
        for(int i=0;i<len;i++){
            char tem=s.charAt(i);
            if(map.containsKey(tem)){
                if(start<=map.get(tem)){//刚开始没加,有些情况不用更新
                  start=map.get(tem)+1;
                }
                map.put(tem,i);
            }else{
               map.put(tem,i); 
            }
            res=Math.max(i-start+1,res);
        }
        return res;
    }

 

3. Longest Substring Without Repeating Characters

标签:

原文地址:http://www.cnblogs.com/zmyvszk/p/5373339.html

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