您的位置:首页 > 其它

3. Longest Substring Without Repeating Characters

2016-04-22 09:18 169 查看
Given a string, find the length of the longest substring without repeating characters.

Examples:

Given
"abcabcbb"
, the answer is
"abc"
, which the length is 3.

Given
"bbbbb"
, the answer is
"b"
, with the length of 1.

Given
"pwwkew"
, the answer is
"wke"
, with the length of 3. Note that the answer must be a substring,
"pwke"
is a subsequence and not a substring.

Similar: 159. Longest Substring with At Most Two Distinct Characters

public class Solution {
public int lengthOfLongestSubstring(String s) {
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
int max = 0;
int start=0;
for (int i = 0; i < s.length(); i++) {
max = max > (i - start) ? max : (i-start); // [start,i), i is not included
char c = s.charAt(i);
if (map.containsKey(c)) {
int j = map.get(c);
while (start <= j) {
map.remove(s.charAt(start));
start++;
}
}
map.put(c, i);
}
max = max > (s.length() - start) ? max : (s.length()-start); // As length = [start,i), i is not included
return max;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: