java 340.具有最多K个不同字符的最长子串(#1).java

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 340.具有最多K个不同字符的最长子串(#1).java相关的知识,希望对你有一定的参考价值。

/*Sliding Window*/
public class Solution {
    public int lengthOfLongestSubstringKDistinct(String s, int k) {
        int[] count = new int[256];
        int num = 0, i = 0, res = 0;
        for (int j = 0; j < s.length(); j++) {
            if (count[s.charAt(j)]++ == 0) num++;
            if (num > k) {
                while (--count[s.charAt(i++)] > 0);
                num--;
            }
            res = Math.max(res, j - i + 1);
        }
        return res;
    }
}
public class Solution {
    public int lengthOfLongestSubstringKDistinct(String s, int k) {
        Map<Character, Integer> map = new HashMap<>();
        int res = 0;
        int start = 0;
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (map.size() <= k) {
                map.put(c, i);
            }
            if (map.size() > k) {
                int leftMost = s.length();
                for (int idx : map.values()) {
                    leftMost = Math.min(leftMost, idx);
                }
                start = leftMost + 1;
                map.remove(s.charAt(leftMost));
            }
            res = Math.max(res, i - start + 1);
        }
        return res;
    }
}

以上是关于java 340.具有最多K个不同字符的最长子串(#1).java的主要内容,如果未能解决你的问题,请参考以下文章

java 340.具有最多K个不同字符的最长子串(#1).java

java 340.具有最多K个不同字符的最长子串(#1).java

java 340.具有最多K个不同字符的最长子串(#1).java

java 340.具有最多K个不同字符的最长子串(#1).java

[LeetCode] 340. Longest Substring with At Most K Distinct Characters 最多有K个不同字符的最长子串

python-leetcode340-滑动窗口法至多包含 K 个不同字符的最长子串