Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptでサイズを縮小するための文字列のエンコード


問題

唯一の引数として文字列strを受け取るJavaScript関数を作成する必要があります。この関数は、入力文字列をエンコードし、そのサイズを元の文字列と比較して、サイズが小さい文字列を返す必要があります。

特定の文字列をエンコードするルールは-

です。
  • n [s]、角括弧内のsは正確にk回繰り返されています。

たとえば、dddは3 [d]にエンコードできますが、3 [d]の長さは4ですが、dddの長さはわずか3文字なので、関数は最終的にdddを返す必要があります。

たとえば、関数への入力が-

の場合
const str = 'aabcaabcd';

その場合、出力は-

になります。
const output = '2[aabc]d';

このためのコードは-

になります
const str = 'aabcaabcd';
function encode(s) {
   const { length } = s;
   const dp = Array(length).fill([]);
   dp.forEach((el, ind) => {
      dp[ind] = Array(length).fill(null);
   });
   for(let l = 1; l <= length; l++){
      for(let i = 0; i + l <= length; i++){
         let j = i + l - 1;
         dp[i][j] = s.substring(i, j + 1);
         for (let k = i; k < j ; k ++) {
            let acc = dp[i][k] + dp[k + 1][j];
            if (acc.length < dp[i][j].length) {
               dp[i][j] = acc;
            }
         }
         let sub = s.substring(i, j + 1);
         let double = sub + sub;
         let cut = double.indexOf(sub, 1);
         if (cut != -1 && cut < sub.length) {
            let acc = sub.length / cut + "[" + dp[i][i + cut - 1] +"]";
            if (acc.length < dp[i][j].length) {
               dp[i][j] = acc;
            }
         }
      }
   }
   let res = dp[0][dp.length - 1];
   return res;
}
console.log(encode(str));

出力

そして、コンソールの出力は-

になります
2[aabc]d

  1. JavaScriptの文字頻度に基づく文字列のエンコード

    問題 最初で唯一の引数として文字列strを受け取るJavaScript関数を作成する必要があります。 この関数は、入力文字列に基づいて新しい文字列を作成する必要があります。新しい文字列の各文字は、元の文字列に1回だけ出現する場合は「(」、元の文字列に複数回出現する場合は「)」です。 そして、capitaliを無視する必要があります たとえば、関数への入力が-の場合 入力 const str = 'Success'; 出力 const output = ')())())'; 例 以下はコードです- const str = 'Succes

  2. Pythonでのランレングスエンコーディング

    このチュートリアルでは、Pythonでランレングスエンコーディングを作成する方法を学習します。文字列を指定すると、文字と頻度を含む新しい文字列が返されます。 たとえば、文字列 tutorialspoint t3u1o2r1i2a1l1s1p1n1としてエンコードされます 。順序はすべての文字+頻度です 。それらすべてに参加して戻ります。プログラムを作成するには、以下の手順を参照してください。 run_length_encodingという名前で関数を記述します。 OrderedDictを使用して辞書を初期化します 文字の初期カウントを0として取得します。 文字列のすべ