题目

我设置了两个游标pq记录左右边界,
我这样写p每次只能位移一个单位,进行了一些重复的操作
怎样才能记录下来已经扫描过的不重复子串 提高效率?
class Solution {
public int lengthOfLongestSubstring(String s) {
int ret = 0;
int p = 0, q = 0;
while (q < s.length()) {
int length = 0;
HashSet<Character> set = new HashSet<>();
for (; q < s.length(); q++) {
if (!set.contains(s.charAt(q))) {
set.add(s.charAt(q));
length++;
} else {
ret = length > ret ? length : ret;
p++;
q = p;
break;
}
ret = length > ret ? length : ret;
}
}
return ret;
}
}