public static int lengthOfLongestSubstring(String s) {
//设置滑动窗口
HashSet<Character> removeSet = new HashSet<>();
// 滑动窗口中字符串
String removeStr="";
// 存储最后结果信息
HashSet<Character> resultSet = new HashSet<>();
String resultStr = "";
// 存储最长字符串长度
int maxLength = 0;
int removeIndex = 0;
// 循环是 从 不同 startIndex 开始
for (int startIndex = 0; startIndex < s.length(); startIndex++) {
// 不在移动窗口中,则将当前字符追加到滑动窗口中
while (removeIndex<s.length() && !removeSet.contains(s.charAt(removeIndex))) {
removeSet.add(s.charAt(removeIndex));
removeStr=removeStr+s.charAt(removeIndex);
// 滑动窗口
removeIndex++;
}
// 遇到在滑动窗口中存在的字符串时,从下一个起点开始重复
// 此时需要记录当前滑动窗口中数据长度或字符串
maxLength = Math.max(maxLength, removeSet.size());
if (resultSet.size()< removeSet.size()) {
resultSet.clear();
resultSet.addAll(removeSet);
resultStr= removeStr;
}
// 开启下一次滑动前 将滑动窗口第一个节点数据溢出
removeSet.remove(s.charAt(startIndex));
removeStr = removeStr.substring(1);
}
return maxLength;
}
寻找字符串中最大不重复字符串长度
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 如何在一个字符串中寻找到你想要的字符串(目标字符串)的所有位置? 例如: 在下面字符串中找到所有"我是"的 ran...