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

JavaScriptで文字列を最大部分に分割する


問題

最初で唯一の引数として文字列strを受け取るJavaScript関数を作成する必要があります。

この関数の目的は、この文字列をできるだけ多くの部分に分割して、各文字が多くても1つの部分に表示されるようにし、これらの部分のサイズを表す整数の配列を返すことです。

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

入力

const str = "ababcbacadefegdehijhklij";

出力

const output = [9, 7, 8];

出力の説明

パーティションは「ababcbaca」、「defegde」、「hijhklij」です。これは、各文字が多くても1つの部分に表示されるようにするためのパーティションです。 「ababcbacadefegde」、「hijhklij」のようなパーティションは、文字列strをより少ない部分に分割するため、正しくありません。

以下はコードです-

const str = "ababcbacadefegdehijhklij";
const splitStrings = (str = '') => {
   const res = []
   const map = {}
   for (let i = 0; i < str.length; i++) {
      map[str[i]] = i
   }
   let start = 0
   while (start <= str.length - 1) {
      let end = map[str[start]]
      for (let i = start + 1; i < end; i++) {
         const currentEnd = map[str[i]]
         if (currentEnd > end) {
            end = currentEnd
         }
      }
      res.push(end - start + 1)
      start = end + 1
   }
   return res
};
console.log(splitStrings(str));

出力

[ 9, 7, 8 ]

  1. JavaScriptで数値文字列を0と1の文字列にエンコードする

    問題 10進数を表す文字列を受け取るJavaScript関数を作成する必要があります。 この関数は、次のルールに基づいて、この10進数を2進数に変換/エンコードする必要があります。 nの各桁dについて kをdのビット数とします 数字0のk-1倍の後に数字1を書きます 数字dをバイナリ文字列として書き込みます。右端のビットが最下位です 最後に、b)とc)の結果を連結して、dのコーディングを取得します 最後に、nの桁に対して得られたすべての結果を連結します。 したがって、コード2を0110として、3を0111としてコーディングします 例 以下はコードです- const str =

  2. JavaScriptで数値を互いに近いn個の部分に分割する

    問題 最初の引数として数値numを取り、2番目の引数として別の数値partsを受け取るJavaScript関数を作成する必要があります。 この関数は、数値numを正確に(部分)の数値に分割する必要があり、これら2つの条件を念頭に置く必要があります- 数値はできるだけ近いものにする必要があります 数値は(可能であれば)均等にする必要があります。 また、番号の順序は重要ではありません。 たとえば、関数への入力が-の場合 入力 const num = 20; const parts = 6; 出力 const output = [3, 3, 3, 3, 4, 4]; 例 以下は