⭐问题描述:
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
Java代码
class Solution {
public int lengthOfLongestSubstring(String s) {
// 记录字符上一次出现的位置
int[] m = new int[128];
// 记录子串长度
int len = 0;
// 遍历整个字符串
for(int i = 0, j = 0; j < s.length(); j++){
// 滑动窗口内不出现重复字符则移动右边界
// 滑动窗口内 出现重复字符则移动左边界
if(m[s.charAt(j)] > i){
i = m[s.charAt(j)];
}
if(len < j - i + 1){
len = j - i + 1;
}
m[s.charAt(j)] = j + 1;
}
return len;
}
}
解题思路:
滑动窗口内不出现重复字符,则移动右边界。
滑动窗口内出现重复字符,则移动左边界。