解題思路
利用set來判斷當前的串中是否包含right處的字符
沒有就更新串長度
有滑動左視窗直到沒有為止
代碼
class Solution {
public int lengthOfLongestSubstring(String s) {
char[] chars = s.toCharArray();
int left=0,right=0,n=s.length();
Set<Character> set = new HashSet<>();
int length = 0;
while (right<n && left<=right){
if (!set.contains(chars[right])){//set中沒有當前的字符
set.add(chars[right]);
length=Math.max(set.size(),length);//子串長度
}
else {//set中包含當前的字符
while (set.contains(chars[right])){//將left處的字符不斷移除,直到set不包含right處的字符
set.remove(chars[left]);
left++;
}
set.add(chars[right]);//set中沒有當前right的字符
}
right++;
}
return length;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/276288.html
標籤:其他
上一篇:Java面向物件三大特性
下一篇:冒泡排序(JAVA)
