LeetCode链接:3. 无重复字符的最长子串 - 力扣(LeetCode)
思路:滑动窗口思想,定义一个set集合,left和right指向索引0的位置,如果right索引处的值不在set集合内则放入并执行right++和length++,如果right索引的值在set集合中,则移除set集合中left索引处的值,并执行left++,length--,最后与maxlength比较大小,比它大则赋值给maxlength
java代码:
class Solution {
public int lengthOfLongestSubstring(String s) {
char[] str = s.toCharArray();
HashSet<Character> set = new HashSet<>();
int length = 0;
int maxlength = 0;
int left = 0;
int right = 0;
while(right < s.length()){
while(set.contains(str[right])){
set.remove(str[left]);
left++;
length--;
}
set.add(str[right]);
right++;
length++;
if(length > maxlength){
maxlength = length;
}
}
return maxlength;
}
}