ホームページ >バックエンド開発 >PHPチュートリアル >文字列のバランスを整えるための最小スワップ数
1963 年。使琴弦平衡最少的交換次數
難度:中
主題: 兩個指標、字串、堆疊、貪婪
給你一個0索引的字串s,偶數長度為n。字串由剛好 n / 2 個左括號'['和n / 2 個右括號']'組成。
字串稱為平衡當且僅當:
您可以在任意兩個索引處任意次數交換括號。
回傳最小交換次數以使s平衡。
範例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 中国語 Web サイトの他の関連記事を参照してください。