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

JavaScript에서 회문 쌍을 형성하기 위해 문자열 결합

<시간/>

문제

문자열 배열을 유일한 인수로 취하는 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 ] ]