プログラマ|文字列圧縮JS


難易度:Level.2
言語:Javascript
見積履歴:2020 KAKAO BLIND RECRUITMENT

❓ Question


圧縮文字表現の最短文字列長は?

📝 My Solution


フルプールコード 👈🏻 クリックしてGithubに移動

function chunkString(str, length) {
    return str.match(new RegExp('.{1,' + length + '}', 'g'));
}
文字列圧縮の核心はこのコードであるべきです.
条件に基づいて文字列のコードを割り当てます.
参考にしたブログを下記に残しておきます.
function solution(s) {
  let newArr = [];
  const lengthArr = [];
    for (let i = 0; i<s.length; i++) {
      let result = [];
      newArr = chunkString(s, i+1)
      let count = 1;
まず、文字列をいくつかの配列に分けます.
条件を満たす文字列の長さを含む配列を作成します.
文字列を配布するための重複文を作成します.
for (let l = 0; l<newArr.length; l++) {
  let stand = newArr[l];
  if (stand === newArr[l+1]) {
    count++
  } else {
    if (count === 1) {
      result.push(stand);
      stand = newArr[l+1]
    } else {
      result.push(count);
      result.push(stand);
      count = 1;
      stand = newArr[l+1]
    }
  }
次の繰り返し文では、別々の文字を比較します.
条件文字を取得し、次の文字と比較して同じ場合はcount値を上げます.
そうでない場合はcount値を前にし、その文字を後ろに置いて配列に入れます.
ただし、countが1の場合は文字のみ入力します.
    }
    lengthArr.push(result.join("").length)
    result = [];
  }
  return Math.min(...lengthArr)
}
結果のすべての文字列を結合し、
長さ配列に入れます.
すべての繰り返し文が完了すると、長さ配列の最小値がエクスポートされます.

結果



コメントブログ

  • 文字列の分割スケジュール