Skip to content

LeetCode 算法题解与代码实现

java
class Solution {

    // 128 ansi字符记录某个字符的出现的次数
    int[] arr = new int[128];

    // n
    public int lengthOfLongestSubstring(String s) {
        int ans = 0;
        char[] charArray = s.toCharArray();
        int len = charArray.length;
        // sliding window
        int left = 0;

        // if check, left++, util check false and update ans
        for (int right = 0; right < len; right++) {
            // 在这个时刻以前是窗口中是没有重复字符的
            arr[charArray[right]]++;
            char cur = charArray[right];
            // 在right右移了以后, 出现了重复的字符
            // 这里出现的重复只会是当前这个字符
            while (arr[cur] > 1) {
                arr[charArray[left++]]--;
            }
            // update ans
            ans = Math.max(ans, right - left + 1);
        }

        return ans;
    }
}

Personal Knowledge Base