用Java实现一个字符串找到最长子串,不重复
时间: 2024-09-25 11:05:52 浏览: 26
在Java中,可以使用滑动窗口(Sliding Window)算法来解决这个问题,通常称为“无重复字符的最长子串”问题。这里我们使用哈希集合(HashSet)来跟踪当前子串中的字符是否已经出现过。
以下是简单的Java代码示例:
```java
import java.util.HashSet;
public class Solution {
public int lengthOfLongestSubstring(String s) {
if (s == null || s.length() == 0) {
return 0;
}
HashSet<Character> set = new HashSet<>();
int start = 0, maxLen = 0;
for (int end = 0; end < s.length(); end++) {
while (set.contains(s.charAt(end))) { // 如果字符已经在集合中,移除左侧最早出现的字符
set.remove(s.charAt(start));
start++;
}
set.add(s.charAt(end)); // 添加当前字符到集合
maxLen = Math.max(maxLen, end - start + 1); // 更新最长子串长度
}
return maxLen;
}
}
```
在这个解决方案中,`start`表示滑动窗口的起始位置,`end`表示窗口的结束位置。当遇到重复字符时,我们就从`start`开始向左移动窗口,直到重复字符不在窗口内为止。这个过程不断更新最长子串的长度。
阅读全文