Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for “abcabcbb” is “abc”, which the length is 3. For “bbbbb” the longest substring is “b”, with the length of 1.
这道题目,用hastMap和双指针来做,题目不难,注意一下对一些细节的处理就好
public class Solution {
public int lengthOfLongestSubstring(String s) {
if (s == null )
return 0;
int rst = 0;
int left = 0;
HashMap<Character, Integer> hashMap = new HashMap<Character, Integer>();
for (int i = 0; i < s.length(); i++) {
Character curCharacter = s.charAt(i);
if (hashMap.containsKey(curCharacter)) {
rst = Math.max(rst, i - left);
left = Math.max(left, hashMap.get(curCharacter) + 1);
hashMap.put(curCharacter, i);
} else {
hashMap.put(curCharacter, i);
}
}
rst = Math.max(rst, s.length() - left);
return rst;
}
}