标签:
/* * 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