プログラマ-文字列圧縮


質問する



解法

  • で分裂した単位が文字列の半分を超える場合、for文を変換する必要はありません.
    1は省略されます.同じ長さの
  • 現在分割されている単語は次の単語に比べて同じであればcountが増加する
    異なる場合はcountが1であるかどうかを判断しstringに接続します.
  • を繰り返して並べたMath.min()で最小値を見つけます.
  • コード#コード#

    function solution(s) {
      const arr = [];
      let answer = 0;
      
      for(let i=0; i<s.length/2; i++) {
          const num = i+1; 
          let count = 1; 
          let currentString = '';
          for (let j=0; j<s.length; j=j+num) { 
              const currentWord = s.substring(j, j+num); 
              const nexWord = s.substring(j+num, j+num+num); 
              if(currentWord === nexWord) {
                  count += 1;
              } else {
                currentString = (count === 1) ? currentString + currentWord : currentString + count + currentWord;
                  count = 1;
              }
          }  
          arr.push(currentString.length);
      }
      
      answer = Math.min(...arr);
      return answer;
    }