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.
在leetcode中做到的一道中等题,计算字符串中不含有重复字符的连续字符串的最大长度。
对于这道思维题我开始想麻烦了。代码记录下来:
class Solution {
public int lengthOfLongestSubstring(String s) {
if(s.length() == 0)
return 0;
if(s.length() == 1)
return 1;
Map<Character, Integer> map = new HashMap<Character, Integer>();
int max = 0;
int j = 0;
for(int i = 0; i < s.length(); i++) {
if(map.containsKey(s.charAt(i))) {
j = Math.max(j, map.get(s.charAt(i)) + 1);
}
map.put(s.charAt(i), i);
max = Math.max(max, i-j+1);
}
return max;
}
}