3. [数组][滑动窗口]无重复字符的最长子串
2021-03-22 13:28
标签:进一步 sub 滑动窗口 ems ring lse ble 布尔 特性 方法一:滑动窗口 \(slideEnd(滑动窗口的右侧)\)每次只需要从上次的位置继续开始后移即可,因为如果在\([i, slideEnd]\)之间没有重复的字符,那么在\([i+1, slideEnd]\)之间也不会有重复的字符串。 在判断是否出现重复字符时可以改用 3. [数组][滑动窗口]无重复字符的最长子串 标签:进一步 sub 滑动窗口 ems ring lse ble 布尔 特性 原文地址:https://www.cnblogs.com/SuPhXLiN/p/13873562.html3. 无重复字符的最长子串
Set
判断,因为子串不含重复字符,正好满足Set
的特性,可以使用HashSet
减少查询开销,当然,可以进一步优化为使用布尔数组用于字符是否出现的记录。// 执行耗时:3 ms,击败了96.75% 的Java用户
// 内存消耗:38 MB,击败了99.80% 的Java用户
class Solution {
public int lengthOfLongestSubstring(String s) {
int maxLength = 0;
int slideEnd = 0;
boolean isAppear[] = new boolean[128];
for (int i = 0; i