无重复字符的最长子串
题目:
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
实现的思路大概就是根据HashMap创建一个滑动窗口,并记录重复数据的最新位置,当遇到重复的时候,跳过重复的内容再进行比对
class Solution {
public int lengthOfLongestSubstring(String s) {
int length=0;
// 用于存放重复数字最终出现的位置
Map<Character, Integer> map = new HashMap<>();
for (int i=0, j=0; j < s.length(); j++) {
// 判断是否包含该元素,如果包含,则需要更新滑动窗口开始位置为该位置之后的第一个位置
if (map.containsKey(s.charAt(j))) {
i = Math.max(map.get(s.charAt(j)), i);
}
// 更新长度与哈希表
length = Math.max(length, j-i+1);
map.put(s.charAt(j), j+1);
}
return length;
}
}