java给一个字符串s,找出其中不含有重复字符的最长子串的长度
时间: 2024-09-11 12:02:55 浏览: 76
在Java中,要找出一个字符串中不含有重复字符的最长子串的长度,可以使用滑动窗口的方法。这里是一个通用的算法步骤说明:
1. 初始化两个指针,分别表示当前考虑的子串的起始位置和结束位置,以及一个用于记录字符最后出现位置的哈希表。
2. 移动结束位置的指针,扩大当前考虑的子串,同时更新哈希表中字符的最后出现位置。
3. 如果遇到一个已经存在于哈希表中的字符,说明当前子串中存在重复字符。此时,移动起始位置的指针,缩小子串,直到重复的字符被排除在外。
4. 在每次移动指针时,更新记录不含有重复字符子串长度的最大值。
5. 重复以上步骤,直到结束位置指针到达字符串的末尾。
以下是Java代码实现的示例:
```java
import java.util.HashMap;
import java.util.Map;
public class Solution {
public int lengthOfLongestSubstring(String s) {
if (s == null || s.length() == 0) return 0;
Map<Character, Integer> map = new HashMap<>();
int maxLen = 0;
for (int start = 0, end = 0; end < s.length(); end++) {
char currentChar = s.charAt(end);
if (map.containsKey(currentChar)) {
start = Math.max(map.get(currentChar) + 1, start);
}
map.put(currentChar, end);
maxLen = Math.max(maxLen, end - start + 1);
}
return maxLen;
}
}
```
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20250102104920.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)