Given a string s, find the length of the longest substring without repeating characters.
Example 1:
Input: s = "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.
Example 2:Input: s = "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.
Example 3:Input: s = "pwwkew"
Output: 3
Explanation: The answer is "wke", with the length of 3.
Notice that the answer must be a substring, "pwke" is a subsequence and not a substring.
Example 4:Input: s = ""
Output: 0
Constraints:
0 <= s.length <= 5 * 104
s consists of English letters, digits, symbols and spaces.
这一题我们可以使用hashMap来进行解答,使用key来存储每一个字符的元素
class Solution {
public int lengthOfLongestSubstring(String s) {
Map<Character,Integer> map = new HashMap<>();
int max = 0,start = 0;//此时的start表示第一个重复元素出现的位置
for(int end = 0;end < s.length();end++){
//取出字符串s中的字符
char ch = s.charAt(end);
//判断是否有重复字符
if(map.containsKey(ch)){
//重新定位start的位置
start = Math.max(map.get(ch) + 1,start);//加一是因为新元素的位置应该在后一个
}
//不包含的时候就直接push进去
map.put(ch,end);
//重新更改max的值】
max = Math.max(max,end - start + 1);
}
return max;
}
}