最长不含重复字符的子字符串
-
使用一个list来维护当前不相同的字符
-
每次遍历时先检查当前字符是否在list中出现过;如果出现,那么从列表的第一个元素开始删除,直到列表中不含该元素截至。
-
注意:每次插入元素时,应该往列表的最后插入。
class Solution {
public int longestSubstringWithoutDuplication(String s) {
int len = s.length();
if (len < 2)
return len;
List<Character> list = new LinkedList<>();
int res = 0, count = 0;
for (int i = 0; i < len; i++) {
if (list.contains(s.charAt(i))) {
while (list.contains(s.charAt(i)))
list.remove(0);
}
list.add(list.size(), s.charAt(i));
res = Math.max(res, list.size());
}
return res;
}
}