3. Longest Substring Without Repeating Characters
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.
问题:
给定一个字符串,找到最长的子串的长度没有重复字符。
实例:
“abcabcbb”,答案是“ABC”,它的长度是3。
“bbbbb”,答案是“B”,长度为1。
“pwwkew”,答案是“wke”,以3的长度。注意,答案必须是一个字符串,“pwke”是子串。
实现方式:
1.获取字符串长度
2.纪录当前值为左标记
3.判断当前字母是否出现过,若出现过就更新当前位置为新的左标记
4.如果当前 值比res大则更新res长度
方法:使用HashMap这样,遇到重复就跳过循环,节约时间和空间
1 public class Solution { 2 public int lengthOfLongestSubstring(String s) { 3 Map<Character,Integer> map =new HashMap<>(); 4 int res =0,len=s.length(); 5 for(int i=0,j=0;j<len;j++){ 6 if(map.containsKey(s.charAt(j))){ 7 i=Math.max(map.get(s.charAt(j)),i); 8 } 9 map.put(s.charAt(j),j+1); 10 res =Math.max(j-i+1,res) ; 11 } 12 return res; 13 } 14 }