문제
문자열 배열을 유일한 인수로 취하는 JavaScript 함수를 작성해야 합니다. 이 함수는 새 회문 문자열을 생성하는 문자열을 결합하는 모든 인덱스 쌍의 배열을 반환해야 합니다.
예를 들어, 함수에 대한 입력이 -
인 경우const arr = ['tab', 'cat', 'bat'];
그러면 출력은 다음과 같아야 합니다. -
const output = [[0, 2], [2, 0]];
출력 설명:
문자열 'battab'과 'tabbat'가 모두 회문이기 때문입니다.
예시
이에 대한 코드는 -
const arr = ['tab', 'cat', 'bat']; const isPalindrome = (str = '') => { let i = 0; let j = str.length - 1; while (i < j) { if (str[i] != str[j]) return false; i++; j--; }; return true; }; const palindromePairs = (arr = []) => { const res = []; for (let i = 0; i < arr.length; i++) { for (let j = i + 1; j < arr.length; j++) { if (isPalindrome(arr[i] + arr[j])) { res.push([i, j]) } if (isPalindrome(arr[j] + arr[i])) { res.push([j, i]) }; }; }; return res; }; console.log(palindromePairs(arr));
코드 설명
여기서 도우미 함수 isPalindome()을 사용하여 문자열이 회문인지 여부를 확인하고 주 함수는 모든 조합을 사용하여 가능한 모든 쌍을 생성하고 조건과 일치하는 쌍을 생성하고 해당 인덱스는 res 배열에 푸시됩니다.피>
출력
콘솔의 출력은 -
[ [ 0, 2 ], [ 2, 0 ] ]