반복되는 문자가 있는 문자열을 가져와서 동일한 문자가 서로 정확히 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