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