>백엔드 개발 >C++ >C++를 사용하여 + 및 - 연산자가 포함된 대수 문자열에서 대괄호를 제거합니다.

C++를 사용하여 + 및 - 연산자가 포함된 대수 문자열에서 대괄호를 제거합니다.

王林
王林앞으로
2023-09-09 10:57:02625검색

C++를 사용하여 + 및 - 연산자가 포함된 대수 문자열에서 대괄호를 제거합니다.

p-(q-r)-s와 같은 대수 문자열이 주어지면 대괄호를 제거하고 문자열을 동일한 수학적 결과를 갖는 문자열로 변환해야 합니다. 따라서 문자열 p-(q-r)-s는 p-q+r-s로 변환되어 동일한 수학적 결과를 제공합니다. 이를 달성하기 위해 스택을 사용하고 대괄호 표현식에서 다가오는 기호를 뒤집어야 하는지 추적할 수 있습니다.

  • 0은 + 또는 뒤집기 없음을 의미합니다

  • 1은 - 또는 뒤집기

  • 를 의미합니다.

그래서 각 괄호를 열 때마다 괄호 안의 기호가 뒤집혔는지 여부에 따라 0 또는 1을 누르게 됩니다. 닫는 괄호가 보이면 스택을 팝합니다.

Note - 괄호로 시작하는 문자열은 고려하지 않습니다. 이런 유형의 문자열을 청소해야 합니다. 예를 들어 s="(p-(q+r))"는 s="p-(q+r)"이어야 합니다. 이 경우 인덱스 1에서 길이 -2까지, 그리고 0에서 길이 -1까지 루프를 쉽게 실행할 수 있습니다.

몇 가지 입력 시나리오를 살펴보겠습니다

메소드의 입력이 문자열 데이터 유형의 숫자라고 가정하면 결과 목록에서 대괄호를 제외한 표현식을 얻습니다 -

으아악

메서드의 입력이 괄호로 시작한다고 가정하면 결과 목록에서 다음과 같이 괄호가 없는 표현식을 얻습니다. -

으아악

Note - 프로그램에서 괄호로 시작하는 문자열은 고려하지 않습니다. 이런 유형의 문자열을 청소해야 합니다. 예를 들어 s="(a+(b-c-d)-e)"는 s="a+(b-c-d)-e"여야 합니다. 이 경우 인덱스 1에서 길이 -2까지, 그리고 0에서 길이 -1까지 루프를 쉽게 실행할 수 있습니다.

여기서 괄호를 포함한 다항식을 입력으로 사용할 수 있으므로 결과 목록에는 다음과 같은 표현식이 표시됩니다. -

으아악

이를 2차 다항식에 적용했지만, 이 방법은 고차 다항식에도 사용할 수 있습니다.

다음 값을 갖는 세 개의 문자열 S1, S2, S3이 있다고 가정해 보세요 ​​-

으아악

그러므로 C++ 메서드를 사용하여 + 및 - 연산자가 포함된 위 문자열에서 대괄호를 제거해 보겠습니다. 주어진 문제에 대한 C++ 프로그램은 다음과 같습니다 -

으아악

출력

으아악

결론

우리는 간단한 스택을 사용하여 각 브래킷 열기에 대한 플래그를 추적합니다. 그런 다음 기호를 사용하여 값을 하나씩 변환합니다. 핵심은 괄호를 사용하여 기호 변경을 추적하는 방법을 알아내는 것입니다. 그러면 문제가 더 쉬워집니다.

위 내용은 C++를 사용하여 + 및 - 연산자가 포함된 대수 문자열에서 대괄호를 제거합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제