1422。文字列分割後の最大スコア
難易度: 簡単
トピック: 文字列、プレフィックス合計
0 と 1 の文字列 s を指定すると、文字列を 2 つの 空でない 部分文字列 (つまり、left 部分文字列と right 部分文字列).
文字列を分割した後のスコアは、左部分文字列のゼロの数と、右の1の数を足したものです。部分文字列。
例 1:
例 2:
例 3:
制約:
ヒント:
解決策:
文字列内の 1 のプレフィックス合計 ('1') を事前計算することで提供されるヒントを利用できます。解決策を詳しく説明します: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 中国語 Web サイトの他の関連記事を参照してください。