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

JavaScript에서 동일한 문자를 구분하도록 문자열 형식 지정

<시간/>

문자열을 첫 번째이자 유일한 인수로 취하는 JavaScript 함수를 작성해야 합니다.

함수는 두 개의 동일한 문자가 서로 인접하게 배치되지 않도록 문자열에 있는 문자를 재구성하고 시도해야 합니다.

그러한 조합이 하나 이상 있으면 함수는 해당 조합 문자열을 반환해야 합니다. 그렇지 않으면 함수는 빈 문자열을 반환해야 합니다.

예를 들어 -

입력 문자열이 -

인 경우
const str = 'add';

그러면 우리의 함수는 −

를 출력할 수 있습니다.
const output = 'dad';

예시

다음은 코드입니다 -

const str = 'add';
const formatString = (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 flag = str.length%2?(Math.floor(str.length/2)+1):str.length/2;
   if(map[keys[0]] > flag){
      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(formatString(str));

출력

다음은 콘솔 출력입니다 -

dad