用Java实现最⻓不重复字串
时间: 2024-03-20 21:45:19 浏览: 51
以下是使用Java实现最长不重复子串的示例代码:
```java
public class LongestSubstring {
public static int lengthOfLongestSubstring(String s) {
int n = s.length();
int ans = 0;
int[] index = new int[128]; // 用于记录字符在字符串中最后一次出现的位置
for (int i = 0, j = 0; j < n; j++) {
i = Math.max(index[s.charAt(j)], i); // 计算当前子串的起始位置
ans = Math.max(ans, j - i + 1); // 计算当前子串长度
index[s.charAt(j)] = j + 1; // 更新字符最后一次出现的位置
}
return ans;
}
public static void main(String[] args) {
String s = "abcabcbb";
System.out.println(lengthOfLongestSubstring(s));
}
}
```
该算法的时间复杂度为O(n),其中n为字符串的长度。具体实现思路是通过维护一个滑动窗口,来遍历字符串s中的所有子串,并计算出其中最长的不重复子串。在遍历过程中,维护一个字符集合,用于判断当前子串中是否有重复的字符,同时使用一个index数组记录每个字符在字符串中最后一次出现的位置,以便在遇到重复字符时快速计算出新的子串起始位置。
阅读全文