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

同じ文字がn距離離れるように文字列を再配置しますJavaScript


繰り返し文字を含む文字列を受け取り、すべての同じ文字が互いに正確にn文字離れている新しい文字列を返すJavaScript関数を作成する必要があります。また、その数は配列の長さよりも小さくする必要があります。

例-

If the input string is: "accessories"
And the number n is 3
Then,
The return value should be: "secrsecisao"
になります。

−必要な出力を達成するために他の順列がある可能性があります。順序は重要ではありません。ロジックに固執する必要があり、それを満たす限り、出力は正しいです。

この関数のコードを書いてみましょう-

const str = 'accessories';
const equalDistance = (str, num) => {
   const map = str.split("").reduce((acc, val) => {
      const count = acc.get(val);
      if(typeof count === 'number'){
         acc.set(val, count+1);
      }else{
         acc.set(val, 1);
      };
      return acc;
   }, new Map());
   const arr = Array.from(map).sort((a, b) => b[1] - a[1]);
   let newString = '';
   for(let i = 0, count = 0; i < str.length;){
      if(!arr[count][1]){
         arr.splice(count, 1);
         continue;
      };
      newString += arr[count][0];
      arr[count][1]--;
      i++;
      count = i % num;
   };
   return newString;
};
console.log(equalDistance(str, 4));
console.log(equalDistance('abb', 2));
console.log(equalDistance('aacbbc', 3));

出力

コンソールの出力は-

になります
sceasceosri
bab
acbacb

  1. 文字列kの距離をC++で並べ替える

    空でない文字列sと整数kがあるとします。同じ文字が少なくとも互いに距離kになるように、文字列を再配置する必要があります。指定された文字列は小文字です。文字列を再配置する方法がない場合は、空の文字列になります。 したがって、入力がs =aabbcc、k =3の場合、同じ文字が少なくとも互いに3の距離にあるため、出力はabcabcになります。 これを解決するには、次の手順に従います- ret:=空の文字列 1つのマップを定義するm n:=sのサイズ 初期化i:=0の場合、i

  2. すべての同じ文字がd距離になるように文字列を再配置するPythonプログラム

    空でない文字列strと整数kが与えられた場合、同じ文字が互いに少なくとも距離kになるように文字列を再配置します。 すべての入力文字列は小文字で示されます。文字列を並べ替えることができない場合は、空の文字列を返します。 例1: str = “tutorialspoint”, k = 3 Answer: “tiotiotalnprsu” 同じ文字が少なくとも3文字離れている。 str = "aabbcc", k = 3 Answer: "abcabc" The same characters are