题目:给定一个字符串,查找最长的字符串的长度,而不重复字符
示例:
imput :"abcabcabc"
Output : 3
分析:使用hashset来记录某个位置的元素之前的不重复的最大序列,然后记录其长度与这个元素之前最大子序列的长度,然后再决定是否更改最大序列的长度。
代码:
class Solution {
public int lengthOfLongestSubstring(String s) {
int i=0,j=0,max=0;
Set<Character> set=new HashSet<>();
while(j<s.length())
{
if(set.contains(s.charAt(j)==false)
{
set.add(s.charAt(j++));
max=Math.max(max,set.size());
}
else
{
set.remove(s.charAt(i++));
}
}
return max;
}
}
使用hashset的目的主要是为了保存不重复的元素,当然,这道题也是可以使用队列来使用,直接将队列头的元素删除即可。