문자열을 첫 번째이자 유일한 인수로 취하는 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