无重复最长子串java
时间: 2024-11-05 21:31:41 浏览: 20
在 Java 中,查找一个字符串中最长的无重复字符子串通常可以使用滑动窗口或者哈希集合的方法来解决。这里是一个基于滑动窗口的基本思路:
```java
public class Solution {
public String lengthOfLongestSubstring(String s) {
if (s == null || s.length() == 0) return "";
// 使用两个指针:left 和 right,分别表示当前子串的起始和结束位置
int left = 0, right = 0;
// 使用一个HashSet来存储已经遇到过的字符
Set<Character> set = new HashSet<>();
// 初始化最长子串长度为0
int maxLength = 0;
while (right < s.length()) {
// 如果右边界处的字符不在set中,将其添加并更新最长子串长度
if (!set.contains(s.charAt(right))) {
set.add(s.charAt(right));
maxLength = Math.max(maxLength, right - left + 1);
right++;
} else { // 如果已经在set中,移除左边界处的字符并移动左指针
set.remove(s.charAt(left));
left++;
}
}
return maxLength > 0 ? s.substring(left, left + maxLength) : "";
}
}
```
在这个解决方案中,当遇到重复字符时,我们向左移动左指针,并从集合中移除该字符,直到找到一个新的不重复字符为止。这个过程不断更新最长子串的长度。
阅读全文