我借鉴大佬的代码如下:
public static int lengthOfLongestSubstring(String s) {
char[] c = s.toCharArray();
if (c.length == 0)
return 0;
int l = 0, r = 0, m = 0;
for (; r < c.length; r++) {
for (int k = l; k < r; k++) {
if (c[k] == c[r]) {
l = k + 1;
break;
}
}
if (r - l + 1 > m)
m = r - l + 1;
}
return m;
}
这种题的思路是设置两个指针:分别为左窗口和右窗口,刚开始两个指针都置为零,然后通过变量k来历遍两个窗口之间的数值,如果数值都与右窗口处的值不同则右窗口指针向后移动一位再重新从左窗口处开始历遍,如果历遍过程中k处的值和右窗口处的值相同,则令左窗口移动到k+1处,再重新历遍,每次历遍结束后比较当前窗口的长度,并记录下长度长的窗口的长度