您的位置:首页 > 其它

leetcode 3 Longest Substring Without Repeating Characters

2016-11-25 21:17 357 查看
用hashmap实现比较简单,其实质就是维护一个列表,根据列表元素个数来更新,如果列表中存在(设为m)就把之前那个m和它之前都删掉,从之前的m的后一个开始考虑

import java.util.HashMap;
import java.util.Map;

public class Solution {
public static int lengthOfLongestSubString(String s){
HashMap<Character,Integer>map=new HashMap<Character,Integer>();
int maxlength=0;
int start=0;
for (int i=0;i<s.length();i++){
if (!map.containsKey(s.charAt(i))){//如果这个数字没有在map中
map.put(s.charAt(i),i);
}
else{//否则出现过
if (map.size()>maxlength) {
maxlength=map.size();//更新
}
int end=map.get(s.charAt(i));//把从start~end中的数淘汰出map
for (int j=start;j<=end;j++){
map.remove(s.charAt(j));
}
start=end+1;//现在map中的起点
map.put(s.charAt(i), i);
}
}
if (map.size()>maxlength) {
maxlength=map.size();//更新
}
return maxlength;
}
public static void main(String args[]){
String s="aab";
System.out.println(Solution.lengthOfLongestSubString(s));
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: