leetcode-java-3. Longest Substring Without Repeating Characters
阿新 • • 發佈:2018-12-27
思路:
用HashMap動態儲存字串的每個不重複的子字串;
當有重複字元出現時,動態更新子字串的最大值和更新HashMap
public class Solution {
public int lengthOfLongestSubstring(String s) {
HashMap<Character,Integer> map = new HashMap<Character,Integer>();
int removeStart = 0,
max = 0,
i = 0;
for(;i < s.length();i++) {
char ch = s.charAt(i);
if(!map.containsKey(ch)) {
map.put(ch,i);
} else{
max = Math.max(max,map.size());
while(map.containsKey(ch)) {
map.remove(s.charAt(removeStart));
removeStart++ ;
}
map.put(ch,i);
}
}
// 當字串無重複時,max還是0,則需要更新
max = Math.max(max, map.size());
return max;
}
}