문자열 압축

6820 단어 javascriptleetcode
문자 배열이 주어지면 다음 알고리즘을 사용하여 압축합니다.

빈 문자열 s로 시작합니다. chars의 각 연속 반복 문자 그룹에 대해:

1) 그룹의 길이가 1이면 s에 문자를 추가합니다.
2) 그렇지 않으면 문자 뒤에 그룹 길이를 추가합니다.

압축된 문자열 s는 별도로 반환되지 않아야 하며 대신 입력 문자 배열 chars에 저장됩니다. 10 이상의 그룹 길이는 chars에서 여러 문자로 분할됩니다.

입력 배열 수정을 완료한 후 배열의 새 길이를 반환합니다. [동일한 배열을 수정해야 함을 의미]

일정한 추가 공간만 사용하는 알고리즘을 작성해야 합니다.

예 1:

입력: chars = ["a","a","b","b","c","c","c"]
출력: 6을 반환하고 입력 배열의 처음 6자는 다음과 같아야 합니다. ["a","2","b","2","c","3"]
설명: 그룹은 "aa", "bb"및 "ccc"입니다. 이것은 "a2b2c3"로 압축됩니다.


var compress = function (char) {
  let index = 0;
  let start = 0;
  let end = 0;
  let count = 0;

  while (char.length > end) {
    while (char[start] === char[end]) {
      count++;
      end++;
    }
    char[index] = char[start];
    index++;
    if (count > 1) {
      let toStr = count?.toString();
      for (let i = 0; i < toStr?.length; i++) {
        char[index] = toStr[i];
        index++;
      }
    }
    count = 0;
    start = end;
  }
  return index;
};
console.log(compress(["a", "a", "b", "b", "c", "c", "c"]));
console.log(compress(["a"]));
console.log(
  compress(["a", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b"])
);


좋은 웹페이지 즐겨찾기