class Solution: def maxLength(self , arr: List[int]) -> int: dic={} # 哈希表方法拿到各字符最后一次出现的索引位置 dp=res=0 for index,num in enumerate(arr): i = dic.get(num,-1) # 拿到各字符最后一次出现的索引位置 j = index dic[num]=j # 更新字符最后一次的下标 dp=dp+1 if dp<j-i else j-i # dp表示以arr[j]结尾的最长无重复子数组 res=max(dp,res) return res
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int dp = 0; int res = 0; int i = 0;
for (int j = 0; j < s.size(); j++) {
i = j - 1;
while (i>=0&&s[i] != s[j])i--; // 线性遍历方法拿到最后一个字符出现位置
dp = (dp < j - i) ? dp + 1 : j - i;
res = max(dp, res);
}
return res;
}
};
