1963년. 스트링의 균형을 맞추는 데 필요한 최소 스왑 횟수
난이도:중
주제: 두 포인터, 문자열, 스택, 탐욕
길이 n이 짝수인 인덱스가 0인 문자열 s가 제공됩니다. 문자열은 정확히 n/2개의 여는 괄호 '['와 n/2개의 닫는 괄호 ']'로 구성됩니다.
다음과 같은 경우에만 문자열을 균형이라고 합니다.
대괄호는 아무 두 개의 인덱스 임의 횟수만큼 바꿀 수 있습니다.
균형을 만들기 위한 최소 스왑 횟수를 반환합니다.
예 1:
예 2:
예 3:
제약조건:
힌트:
해결책:
제약 조건을 고려할 때 효율적인 두 포인터 접근 방식을 사용할 수 있습니다.
트랙 균형: 문자열을 반복하면서 여는 괄호와 닫는 괄호 사이의 균형을 추적할 수 있습니다.
불균형 식별: 잔액이 음수가 되면 문자열의 해당 지점에 여는 괄호 '['보다 닫는 괄호 ']'가 더 많다는 것을 나타냅니다. 여기서 문자열의 균형을 맞추기 위해 괄호를 바꿔야 합니다.
카운트 스왑: 불균형을 수정하려면:
이 솔루션을 PHP로 구현해 보겠습니다: 1963. 스트링 균형을 맞추기 위한 최소 스왑 횟수
<?php /** * @param String $s * @return Integer */ function minSwaps($s) { ... ... ... /** * go to ./solution.php */ } // Example usage: $s1 = "][]["; echo minSwaps($s1); // Output: 1 $s2 = "]]][[["; echo minSwaps($s2); // Output: 2 $s3 = "[]"; echo minSwaps($s3); // Output: 0 ?>
잔액 추적:
최대 불균형 계산:
스왑 계산:
이 솔루션을 사용하면 대규모 입력에도 제약 조건을 충족할 수 있습니다.
연락처 링크
이 시리즈가 도움이 되었다면 GitHub에서 저장소에 별표를 표시하거나 즐겨찾는 소셜 네트워크에서 게시물을 공유해 보세요. 여러분의 지원은 저에게 큰 의미가 될 것입니다!
이런 유용한 콘텐츠를 더 원하시면 저를 팔로우해주세요.
위 내용은 스트링의 균형을 맞추기 위한 최소 스왑 수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!