class Solution {
public int lengthOfLongestSubstring(String s) {
int res =0;
//第一次开始遍历
for(int i =0; i<s.length();i++){
//创建一个HashSet集合 无序,不能存放重复值
Set<Character> set = new HashSet<>();
//第二次遍历开始
for(int j = i ; j < s.length() ; j++){
//contains(Object o)判断集合集合中是否有指定元素
//charAt() 返回指定索引出char值
if( set.contains(s.charAt(j))) break;
//两数对比取出最大值
res = Math.max(res,j-i+1);(res定义在循环外,所以它一直取的是最大值)
set.add(s.charAt(j));
}
}
return res;
}
}
第一次遍历开始,从字符串S中的第一个字符开始判断,是否在set集合中有重复值
没有,就把字符加到set集合中,res对比子字符串长度并取出最大值。
有,就跳出次循环,从字符串s的第二个字符开始判断重复以上操作;
LeetCode算法第3题 无重复字符的最长子串
最新推荐文章于 2025-03-24 20:00:00 发布