题目:求无重复元素的子串的最大长度。
public int maxLength (int[] arr)
思路:用双指针,快慢指针实现滑动窗口
子部分求最大某属性,动态规划dp[j](需要另一个下标就声明为dp[j]) 但是子串问题,动态规划复杂,不使用
- 设i(指向重复元素的下标)为-1,因为开始时还没有重复的下标。然后用j往后遍历,没有在map里的就放到map中。然后j-i表示满足条件子串的长度,maxLength和j-i取最大值为maxLength。
- 当更新i时,需要把原来i和map.get(arr[j])的最大值更新为i,举个bacabc的例子就明白了。
/*
求无重复子串的最大长度
用双指针实现滑动窗口 用动态规划复杂的就不用
思路:设i为-1,j从0开始走,没重复的就放到map里,重复的话就更新i为i和map.get(arr[j])的最大值
用j-i表示中间连续的个数 maxLength更新为maxLength和j-i的最大值
举例:abcabc bacabc(重要)
*/
public