K 고유 ​​문자가 있는 가장 긴 하위 문자열

8196 단어 javascriptleetcode
문제 설명 #
주어진 문자열에서 K개 이하의 개별 문자가 포함된 가장 긴 하위 문자열의 길이를 찾습니다.

예 1:

입력: 문자열="araaci", K=2
출력: 4
설명: 고유 문자가 '2'개 이하인 가장 긴 하위 문자열은 "araa"입니다.

const longestSubstringWithKDistinctCharacters = (str, k) => {
  let map = new Map();
  let temp = "";
  let max = 0;
  let stri = "";
  let end = 0;

  while (str.length > end) {
    const nextChar = str[end];

    if (map.size < k && !map.has(nextChar)) {
      map.set(nextChar, 1);
      temp = temp + nextChar;
      end++;
    } else if (map.size <= k && map.has(nextChar)) {
      map.set(nextChar, map.get(nextChar) + 1);
      temp = temp + nextChar;
      end++;
    } else if (map.size === k && !map.has(nextChar)) {
      while (map.size === k) {
        // save the current
        if (temp.length > max) {
          max = temp.length;
          stri = temp;
          allArray.push(stri);
        }

        let startValue = temp[0];
        map.set(startValue, map.get(startValue) - 1);
        if (map.get(startValue) === 0) {
          map.delete(startValue);
        }
        temp = temp.substring(1);
      }
    }
  }
  return stri;
};

console.log(longestSubstringWithKDistinctCharacters("csbebbbi", 3));
console.log(longestSubstringWithKDistinctCharacters("araaci", 2));
console.log(longestSubstringWithKDistinctCharacters("araaci", 1));
console.log(longestSubstringWithKDistinctCharacters("cbbebi", 3));


좋은 웹페이지 즐겨찾기