传送门
https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/submissions/
对于这道题来说呢,我觉得用的方法是滑动窗口,首先给我的感觉有字母,我就觉得利用用ASCII码来表示字母的位置然后来找到最长的子串。
public class LeetCode3 {
//滑动窗口的思想
public static int lengthOfLongestSubstring(String s) {
//开辟数组存储字母ASCII码
int [] freq = new int[256];
//左边界
int l = 0;
//右边界
int r = 0;
//长度
int res = 0;
//当左边界小于字符串长度,一直循环
while (l < s.length()){
//如果右边界大于s的长度或者值不为0,不为0说明这个字母已经有过了
if (r < s.length() && freq[ s.charAt(r) ] == 0 ) {
freq[ s.charAt(r)] ++;
r ++;
}
else
{
freq[ s.charAt(l) ] --;
l++;
}
res = Math.max(res , r-l);
}
return res;
}