本文共 1037 字,大约阅读时间需要 3 分钟。
为了解决这个问题,我们需要找到给定字符串中最长的不含重复字符的子串的长度。我们可以使用滑动窗口的方法来高效地解决这个问题。
我们使用两个指针,左指针和右指针,来维护一个滑动窗口。右指针负责扩展窗口,左指针负责收缩窗口。当遇到重复字符时,左指针移动到重复字符的下一个位置,确保窗口中的字符不重复。
具体步骤如下:
import java.util.HashSet;import java.util.Set;public class Solution { public int lengthOfLongestSubstring(String s) { Set set = new HashSet<>(); int left = 0, max = 0; int right = 0; while (right < s.length()) { char c = s.charAt(right); while (set.contains(c)) { set.remove(s.charAt(left)); left++; } set.add(c); right++; max = Math.max(max, right - left); } return max; }} max变量初始化为0。max。这种方法的时间复杂度为O(n),其中n是字符串的长度,能够在合理时间内处理较长的字符串。
转载地址:http://lrwcz.baihongyu.com/