1422。分割字串後的最高分數
難度:簡單
主題: 字串、前綴和
給定一個由0 和1 組成的字串s,回傳將字串拆分為兩個非空子字串(即left子字串和左子字串後的最大分數) 🎜>右
子字串)。分割字串後的分數是左子字串中零的數量加上右中一
的數量子字符串。範例1:
範例2:
範例 3:
約束:
提示:
解:
我們可以利用透過預先計算字串中的前綴和 ('1') 提供的提示。以下是我們如何分解解決方案:
讓我們用 PHP 實作這個解:1422。分割字串後的最高分數
<?php /** * @param String $s * @return Integer */ function maxScore($s) { ... ... ... /** * go to ./solution.php */ } // Test cases $s1 = "011101"; $s2 = "00111"; $s3 = "1111"; echo "Input: $s1, Output: " . maxScore($s1) . PHP_EOL; // Output: 5 echo "Input: $s2, Output: " . maxScore($s2) . PHP_EOL; // Output: 5 echo "Input: $s3, Output: " . maxScore($s3) . PHP_EOL; // Output: 3 ?>
前綴和計算:我們計算數組 $prefixOneCount 中 1 的前綴和,其中每個索引保存截至該點的 1 的累積計數。
迭代可能的拆分:我們開始迭代每個索引i(從0 到n-2),其中字串被拆分為左部分(從0 到i)和右部分(從i 1 到n-1)。
分數計算:每個分割的分數計算為左側部分的 0 和右側部分的 1 的總和。我們更新本次迭代中遇到的最大分數。
最終結果:函數傳回所有分割期間找到的最大分數。
時間複雜度:O(n)
空間複雜度:O(n)
echo maxScore("011101"); // Output: 5 echo maxScore("00111"); // Output: 5 echo maxScore("1111"); // Output: 3
這個解是最優的,可以在限制範圍內處理問題。
聯絡連結
如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!
如果您想要更多類似的有用內容,請隨時關注我:
以上是分割字串後的最大分數的詳細內容。更多資訊請關注PHP中文網其他相關文章!