문자열을 첫 번째 인수(예:str)로, 숫자(예:num)를 두 번째 인수로 취하는 JavaScript 함수를 작성해야 합니다.
함수는 주어진 문자열 str에서 구성할 수 있는 길이가 정확히 num인 회문 문자열의 수를 계산해야 합니다. 그러면 함수가 최종적으로 개수를 반환해야 합니다.
예를 들어 -
입력 문자열과 숫자가 -
인 경우const str = 'ij'; const num = 4;
그러면 출력은 다음과 같아야 합니다. -
const output = 4;
왜냐하면 그 네 가지 가능한 회문 문자열은 -
'iiii', 'jjjj', 'ijji', 'jiij'
접근 방식:
먼저 해시 세트를 사용하여 주어진 문자열의 고유한 문자 수를 계산합니다. 회문의 길이가 홀수인 경우 중간 문자는 u를 선택할 수 있으며 여기서 u는 문자열의 고유 문자 수입니다.
num이 짝수이면 다음과 같은 가능성이 있습니다. -
power(u, num/2)
num이 홀수인 경우 해당 위치에 대해 u개의 선택 항목이 있으므로 이 숫자에 u를 곱해야 합니다.
예시
다음은 코드입니다 -
const str = 'ij'; const num = 4; const findValidPalindromes = (str = '', num = 1) => { const set = new Set(); for(let i = 0; i < str.length; i++){ const el = str[i]; set.add(el); }; const u = set.size; if(num & 1){ return Math.pow(u, num/2) * u; }else{ return Math.pow(u, num/2); }; }; console.log(findValidPalindromes(str, num));
출력
다음은 콘솔 출력입니다 -
4