この解答例はChatGPTによって生成されています,正しいかは自己判断で。

BFE.devでのAI解答例 - JavaScript コーディング問題
97. 文字列を圧縮する

以下はJavaScriptの回答例です。

function compress(str) {
  let result = '';
  let count = 1;
  for (let i = 0; i < str.length; i++) {
    if (str[i] == str[i + 1]) {
      count++; // 同じ文字の場合、カウントを増やす
    } else {
      result += str[i] + (count > 1 ? count : ''); // 結果文字列に追加
      count = 1; // カウントをリセット
    }
  }
  return result;
}

基本的なアルゴリズムとしては、文字列を1文字ずつ読み取り、同じ文字が連続する場合にはカウントを増やしていきます。違う文字になったら、それまでの文字とカウントを結果文字列に追加して、カウントをリセットします。最後に結果文字列を返します。

ただし、カウントが1の場合は数字を付けずにそのまま文字列に追加する必要があるため、三項演算子を使って条件分岐しています。