无重复字符的最长子串java
时间: 2023-10-29 15:59:22 浏览: 99
没有重复字符最长子串
以下是一个求解无重复字符的最长子串的Java代码示例:
```java
public int lengthOfLongestSubstring(String s) {
int n = s.length();
Set<Character> set = new HashSet<>();
int ans = 0, i = 0, j = 0;
while (i < n && j < n) {
if (!set.contains(s.charAt(j))) {
set.add(s.charAt(j++));
ans = Math.max(ans, j - i);
} else {
set.remove(s.charAt(i++));
}
}
return ans;
}
```
该代码使用了滑动窗口的思想,通过维护一个字符集合来判断当前字符是否已经出现过,如果没有出现过,则继续向右移动窗口并更新最长子串的长度,如果出现过,则从左边收缩窗口,直到没有重复字符。最终返回最长子串的长度。
阅读全文