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

JavaScript에서 문자열이 반복되는 하위 문자열의 조합입니까?

<시간/>

문제

문자열을 유일한 인수로 취하는 JavaScript 함수를 작성해야 합니다. 우리 함수는 문자열 str의 부분 문자열을 가져와서 부분 문자열의 여러 복사본을 함께 추가하여 구성할 수 있는지 확인해야 합니다.

예를 들어, 함수에 대한 입력이 -

인 경우
const str = 'thisthisthisthis';

그러면 출력은 다음과 같아야 합니다. -

const output = true;

출력 설명:

'this' 문자열을 반복해서 붙여서 만든 문자열이기 때문입니다.

예시

이에 대한 코드는 -

const str = 'thisthisthisthis';
const repeatedSubstring = (str = '') => {
   const {length} = str;
   const checkSubString = ss => {
      const m = ss.length;
      for (let i = 0; i < length; i += m)
         for (let j = 0; j < m; j++)
            if (str[i+j] !== ss[j])
               return false;
      return true;
   };
   let factor = 2, len;
   while (length/factor >= 1){
      while (length % factor) factor++;
      len = length/factor;
      if (checkSubString(str.substring(0,len))){
         return true;
      };
      factor++;
   };
   return false;
};
console.log(repeatedSubstring(str));

코드 설명:

먼저 부분 문자열 패턴 검사 기능을 설정합니다.

그런 다음 문자열 str을 균등하게 나누는 모든 가능한 요소를 반복하여 실행 가능한 반복 패턴이 발견되었는지 확인했습니다.

출력

콘솔의 출력은 -

true