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.找到最长的子字符串,其思想是一次遍历,两个指针i和j,存在map中,如果没有重复的,则直接+1,如果有重复的,则把j的位置后移,然后计算max
public
int
lengthOfLongestSubstring(String
s)
{if(s.length()==0)return0;
HashMap<Character,
Integer>map=newHashMap<Character, Integer>();
int
max=0;
for(int
i=0,
j=0; i<s.length(); ++i){
if(map.containsKey(s.charAt(i)))
{ j = Math.max(j,map.get(s.charAt(i))+1);
//关键点:j只能往后走,不能往前看。
}
map.put(s.charAt(i),i);
max=
Math.max(max,i-j+1);
}
return
max;
}
本文介绍了一种求解字符串中最长无重复字符子串长度的方法。通过一次遍历并使用两个指针i和j,结合哈希表记录字符位置,高效地解决了该问题。
721

被折叠的 条评论
为什么被折叠?



