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

JavaScriptで同じ文字列文字を離して配置する


問題

最初の引数として文字列strを取り、2番目の引数として数値num(num <<文字列strの長さ)を受け取るJavaScript関数を作成する必要があります。

この関数は、文字列strの文字を再配置し、2つの類似した文字がnum文字未満離れないように、つまり、類似した文字が少なくともnum文字の距離にあるように新しい文字列を作成する必要があります。

その後、関数は最終的に新しく作成された文字列を返す必要があります。そして、この配置を実現できない場合、関数は空の文字列を返す必要があります。

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

の場合
const str = 'kkllmm';

その場合、出力は-

になります。
const output = 'mlmklk';

このためのコードは-

になります
const str = 'kkllmm';
const placeApart = (str = '') => {
   const map = {};
   for(let i=0; i<str.length; i++){
      map[str[i]] = map[str[i]] || 0;
      map[str[i]] ++;
   }
   let keys = Object.keys(map).sort((a,b)=>{
      if(map[a]<map[b])
      return 1;
      return -1;
   });
   let len = str.length%2 ? (Math.floor(str.length/2)+1) : str.length/2;
   if(map[keys[0]] > len){
      return "";
   };
   const res = [];
   let index = 0, max = str.length-1;
   while(keys.length){
      let currKey = keys.shift();
      let count = map[currKey];
      while(count){
         res[index] = currKey;
         index = index+2;
         if(index>max)
            index=1;
            count--;
      }
   }
   return res.join("");
};
console.log(placeApart(str));

出力

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

になります
mlmklk

  1. JavaScriptでの文字列の文字の再グループ化

    問題 最初で唯一の引数として文字列strを受け取るJavaScript関数を作成する必要があります。 文字列strには、3種類の文字を含めることができます- 英語のアルファベット:(A-Z)、(a-z) 数字:0-9 特殊文字-残りのすべての文字 関数はこの文字列を反復処理し、正確に3つの要素で構成される配列を構築する必要があります。最初の要素には文字列に存在するすべてのアルファベットが含まれ、2番目の要素には数字が含まれ、3番目の特殊文字は文字の相対的な順序を維持します。最終的にこの配列を返す必要があります。 たとえば、関数への入力が 入力 const s

  2. C#での文字列の文字の交換

    文字列の文字を入れ替えるには、Selectメソッドを使用します。 まず、文字列が-であるとしましょう string str = "PQRQP"; ここで、Pのすべての出現をQと交換し、QをPと交換する必要があります- str.Select(a=> a == 'P' ? 'Q' : (a=='Q' ? 'P' : a)).ToArray(); 上記は文字を置き換えます。 競合コードを見てみましょう- 例 using System; using System.Linq; public class P