classSolution{ // 定义一个公开的方法 lengthOfLongestSubstring,接受一个字符串 s 作为参数,并返回一个整型值。 publicintlengthOfLongestSubstring(String s){ // 定义一个整型变量 left 用于追踪当前考察的子串的开始位置。 int left = 0; // 创建一个字符集合 set,用于存储当前考察的子串中的字符,以便快速检查字符是否重复。 Set<Character> set = new HashSet<>(); // 将字符串 s 转换为字符数组 ans,以便逐个访问每个字符。 char[] ans = s.toCharArray(); // 定义一个整型变量 x 用于记录最长无重复字符子串的长度。 int x = 0; // 使用一个 for 循环从左到右遍历字符数组 ans。 for (int right = 0; right < ans.length; right++) { // 如果字符集 set 中不包含当前字符 ans[right],则将其添加到 set 中。 if (!set.contains(ans[right])) { set.add(ans[right]); } else { // 如果字符集中已包含 ans[right],则通过 while 循环移除从 left 到当前重复字符之间的所有字符。 while (ans[left] != ans[right]) { set.remove(ans[left++]); } // 将 left 移动到重复字符的下一个位置。 left++; } // 更新 x 的值,保留最大的子串长度。计算当前无重复子串的长度为 right-left+1。 x = Math.max(x, right - left + 1); } // 返回找到的最长无重复字符子串的长度。 return x; } }