Advertisement
lifeiteng

340. Longest Substring with At Most K Distinct Characters

Sep 11th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.61 KB | None | 0 0
  1. class Solution {
  2.     public int lengthOfLongestSubstringKDistinct(String s, int k) {
  3.         int n = s.length(), i = 0, re = 0;
  4.         Map<Character, Integer> map = new HashMap<>();
  5.         for(int j = 0; j < n; j++)
  6.         {
  7.             char ch = s.charAt(j);
  8.             map.put(ch, map.getOrDefault(ch, 0) + 1);
  9.             while(map.keySet().size() > k)
  10.             {
  11.                 char rem = s.charAt(i++);
  12.                 map.put(rem, map.get(rem) - 1);
  13.                 if(map.get(rem) == 0) map.remove(rem);
  14.             }
  15.             re = Math.max(re, j + 1 - i);
  16.         }
  17.         return re;
  18.     }
  19. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement