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

JavaScript에서 아름다운 숫자 문자열 결정하기

<시간/>

숫자 문자열 str은 다음 조건을 만족하는 두 개 이상의 양의 정수로 구성된 arr 시퀀스로 분할될 수 있는 경우 아름다운 문자열이라고 합니다. -

  • arr[i] - arr[i - 1] =1, 시퀀스 인덱스의 모든 i에 대해, 즉 시퀀스의 각 요소가 이전 요소보다 큽니다.

  • 시퀀스의 어떤 요소도 선행 0을 포함해서는 안 됩니다. 예를 들어, '50607'을 [5, 06, 07] 시퀀스로 나눌 수 있지만 06과 07에는 선행 0이 있기 때문에 아름답지 않습니다.

  • 시퀀스의 내용은 재배열할 수 없습니다.

예를 들어 -

입력 문자열이 -

인 경우
const str = '91011';

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

const output = true;

원하는 시퀀스가 ​​[9, 10, 11]이기 때문에

예시

이에 대한 코드는 -

const str = '91011';
const isBeautiful = (str) => {
   let i = 1;
   let count=0;
   const { length } = str;
   while(i <= length / 2){
      let check = true;
      let j = i;
      let left = BigInt(str.substring(0,j));
      let nextRange = (left + 1n).toString().length;
      while(j + nextRange <= length){
         let right=BigInt(str.substring(j,j+nextRange));
         if(left === right-1n){
            left=right;
            j+=nextRange;
            nextRange=(left+1n).toString().length;
            count=j;
         }else{
            check=false;
            break;
         }
      };
      if(check === true && count === length){
         return true;
      }
      i++;
   };
   return false;
};
console.log(isBeautiful(str));

출력

콘솔의 출력은 -

true