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

JavaScript에서 가장 긴 드문 시퀀스 찾기

<시간/>

문자열 배열을 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 배열의 문자열 중에서 가장 길고 흔하지 않은 하위 시퀀스를 찾아야 합니다.

가장 길고 흔하지 않은 하위 시퀀스는 이러한 문자열 중 하나의 가장 긴 하위 시퀀스를 의미하며 이 하위 시퀀스는 다른 문자열의 하위 시퀀스가 ​​되어서는 안 됩니다.

우리 함수는 이 가장 길고 흔하지 않은 하위 시퀀스의 길이를 반환해야 합니다.

예:입력 배열이 -

인 경우
const arr = ["aba", "cdc", "eae"];

그러면 출력은 3이 되어야 합니다.

예시

이에 대한 코드는 -

const arr = ["aba", "cdc", "eae"];
const findUncommonLength = (array = []) => {
   const seen = {};
   const arr = [];
   let max = −1;
   let index = −1;
   for(let i = 0; i < array.length; i++){
      seen[array[i]] = (seen[array[i]] || 0) + 1;
      if(seen[array[i]] > 1){
         if(max < array[i].length){
            max = array[i].length
            index = i;
         }
      }
   };
   if(index === −1) {
      array.forEach(el =>{
         if(el.length > max) max = el.length;
      })
      return max;
   };
   for(let i = 0; i < array.length; i++){
      if(seen[array[i]] === 1) arr.push(array[i]);
   };
   max = −1;
   for(let i = arr.length − 1; i >= 0; i−−){
      let l = arr[i];
      let d = 0;
      for(let j = 0; j < array[index].length; j++){
         if(array[index][j] === l[d]){
            d++;
         }
      }
      if(d === l.length){
         let temp = arr[i];
         arr[i] = arr[arr.length − 1];
         arr[arr.length − 1] = temp;
         arr.pop();
      }
   };
   arr.forEach(el =>{
      if(el.length > max) max = el.length;
   });
   return max;
};
console.log(findUncommonLength(arr));

출력

콘솔의 출력은 -

3