public int lengthOfLongestSubstring(String s) {
int maxLength = 0;
char[] chars = s.toCharArray();
for (int j = 0; j < chars.length; j++) {
int len = 0;
int[] arrs = new int[127];
for (int i = j; i < chars.length; i++) {
// 先获取字符的ASCII码
int ch = chars[i];
if (arrs[ch] != 1) {
arrs[ch] = 1;
len++;
} else {
break;
}
}
if (maxLength < len) {
maxLength = len;
}
}
return maxLength;
}
这道题在leetcode上难度是中等,我的思路是利用类似于布隆姆过滤器那种方法,就是通过一个数组,这个数组的长度是127,正好对应电脑键盘上所能表示的所有字符个数,然后在遍历字符串的时候按照ascii码将其所对应在数据的位置置为1,从字符串的第一个字符开始遍历,如果是第一次遍历到这个字符,就会置为1,第二次的时候就会停止这一次循环,然后下一次遍历开始。每遍历完一次,便将这次遍历找到的最长的字符和之前已经保存的比较,最后就可以得出最大的长度