현재 위치: > 최신 기사 목록> 문자열에서 각 브래킷 쌍의 내용을 바꾸십시오 - PHP 구현 세부 사항

문자열에서 각 브래킷 쌍의 내용을 바꾸십시오 - PHP 구현 세부 사항

M66 2025-09-24

각 브래킷 쌍 사이의 하위 문자열을 반전시킵니다

소문자와 브래킷이 포함 된 줄이 주어지면, 가장 안쪽 괄호에서 시작하여 각 일치하는 괄호 쌍의 문자열을 뒤집고 마지막으로 처리 된 결과를 괄호없이 반환하는 것입니다.

입력하다:

S = "(ABCD)"

산출:

"DCBA"

Example 2:

입력하다:

s = "(u (love) i)" "

산출:

"사랑해요"

설명 : 먼저 하위 문자열 "Love"를 뒤집은 다음 전체 문자열을 뒤집습니다.

Example 3:

입력하다:

s = "(ed (et (et)) el)" "

산출:

"leetcode"

설명 : 먼저, 우리는 하위 문자열 "OC", "etco"및 마지막으로 전체 문자열을 뒤집습니다.

강제

  • S에는 소문자 영어 문자와 괄호 만 포함되어 있습니다.
  • 모든 괄호가 균형을 유지하는지 확인하십시오.

해결책

스택을 사용하여 괄호와 중첩 구조로 문자를 추적 할 수 있습니다. 특정 단계는 다음과 같습니다.

  • 문자열의 각 문자를 반복합니다.
  • 오프닝 브래킷이 발생하면 "(", 스택에 밀어 넣으십시오.
  • 닫는 브래킷 ")")가 발생하면 오프닝 브래킷이있을 때까지 문자가 스택에서 튀어 나옵니다.
  • 마지막으로, 스택의 내용물은 역방향 문자열을 얻기 위해 연결됩니다.

PHP 구현 코드 예 :

 <?php
// 예 1
echo reverseParentheses("(abcd)") . "\n";  // 산출:"dcba"

// 예 2
echo reverseParentheses("(u(love)i)") . "\n";  // 산출:"iloveu"

// 예 3
echo reverseParentheses("(ed(et(oc))el)") . "\n";  // 산출:"leetcode"
?>

설명하다

함수 reverseparentheses는 문자열을 입력으로 사용하고 스택을 사용하여 중첩 브래킷을 처리합니다.

  • 닫는 브래킷 ")")가 발생하면 오프닝 브래킷이 될 때까지 스택에서 캐릭터가 팝업되기 시작합니다. "(".
  • 팝 된 캐릭터를 뒤집어 스택으로 다시 밀어 넣으십시오.
  • 캐릭터가 괄호가 아닌 경우 스택에 직접 배치됩니다.

마지막으로, 스택의 요소를 연결하여 최종 문자열을 얻습니다. 이 방법은 중첩 브래킷을 효과적으로 처리하고 각 브래킷 쌍의 내용을 반전시킨 후 올바른 문자 순서를 보장 할 수 있습니다.