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

JavaScript의 꺾쇠괄호 구문 분석 및 균형 문제

<시간/>

꺾쇠 괄호 문자열이 주어지고 모든 괄호가 일치하도록 문자열의 시작과 끝에 괄호를 추가하는 함수를 작성해야 합니다.

모든 <에 해당하는>가 있고 모든>에 해당하는 <.

가 있는 경우 꺾쇠괄호가 일치합니다.

예를 들어 - 입력 문자열이 -

인 경우
const str = '><<><';

출력

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

const output = '<><<><>>';

여기에서 문자열의 균형을 맞추기 위해 시작 부분에 '<'를 추가하고 끝에 '>>'를 추가했습니다.

지금까지 열려 있는 '<' 태그의 수를 세는 숫자를 사용할 것입니다. 그런 다음 '>' 태그를 만났을 때 현재 열려 있는 태그가 없으면 문자열의 시작 부분에 '<'를 추가합니다(열린 태그 수는 0으로 유지).

그런 다음 마지막에 현재 열려 있는 태그의 수와 일치하는 '>의 수를 추가합니다.

예시

이에 대한 코드는 -

const str = '><<><';
const buildPair = (str = '') => {
   let count = 0;
   let extras = 0;
   for (const char of str) {
      if (char === '>') {
         if (count === 0) {
            extras++;
         } else {
            count−−;
         };
      } else {
         count++;
      };
   };
   const leadingTags = '<'.repeat(extras);
   const trailingTags = '>'.repeat(count);
   return leadingTags + str + trailingTags;
};
console.log(buildPair(str));

출력

콘솔의 출력은 -

><<><>>