Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 동일한 문자열 문자 분리

<시간/>

문제

문자열 str을 첫 번째 인수로 사용하고 숫자 num(num <

함수는 문자열 str의 문자를 재배열하고 두 개의 유사한 문자가 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