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