Leetcode 3无重复字符的最长字串
class Solution {
public int lengthOfLongestSubstring(String s) {
//定义一个map<k,v>,key存字符,value存字符下标(位置)
int len = 0;
Map<Character,Integer> map = new HashMap<>();
for(int start = 0,end = 0;end<s.length();end++){
char a = s.charAt(end);
if(map.containsKey(a)){
//调整左边界为end的位置
start = Math.max(map.get(a),start);
}
len = Math.max(end-start+1,len);
map.put(a,end+1);
}
return len;
}
}
解法:滑动窗口
1.遇到重复字符,调整左边界到重复字符的位置
2.字符不重复,右边界向右扩展
举例:

Please keep refueling and don't slack off.

浙公网安备 33010602011771号