Maison > développement back-end > tutoriel php > Score maximum après avoir divisé une chaîne

Score maximum après avoir divisé une chaîne

Mary-Kate Olsen
Libérer: 2025-01-03 22:32:41
original
278 Les gens l'ont consulté

Maximum Score After Splitting a String

1422. Score maximum après avoir divisé une chaîne

Difficulté :Facile

Sujets : Chaîne, somme de préfixe

Étant donné une chaîne s de zéros et de uns, renvoie le score maximum après avoir divisé la chaîne en deux non vides sous-chaînes (c'est-à-dire gauche sous-chaîne et droitesous-chaîne).

Le score après avoir divisé une chaîne est le nombre de zéros dans la sous-chaîne gauche plus le nombre de uns dans la droite sous-chaîne.

Exemple 1 :

  • Entrée : s = "011101"
  • Sortie : 5
  • Explication : Toutes les manières possibles de diviser s en deux sous-chaînes non vides sont :
    • gauche = "0" et droite = "11101", score = 1 4 = 5
    • gauche = "01" et droite = "1101", score = 1 3 = 4
    • gauche = "011" et droite = "101", score = 1 2 = 3
    • gauche = "0111" et droite = "01", score = 1 1 = 2
    • gauche = "01110" et droite = "1", score = 2 1 = 3

Exemple 2 :

  • Entrée : s = "00111"
  • Sortie : 5
  • Explication :Quand gauche = "00" et droite = "111", on obtient le score maximum = 2 3 = 5

Exemple 3 :

  • Entrée : s = "1111"
  • Sortie : 3

Contraintes :

  • 2 <= s.length <= 500
  • La chaîne s est composée uniquement des caractères « 0 » et « 1 ».

Indice :

  1. Précalculez une somme de préfixes de uns (« 1 »).
  2. Parcourez de gauche à droite en comptant le nombre de zéros (« 0 »), puis utilisez la somme de préfixes précalculée pour compter les uns (« 1 »). Mettez à jour la réponse.

Solution :

Nous pouvons exploiter l'indice fourni en précalculant une somme de préfixes de uns (« 1 ») dans la chaîne. Voici comment nous pouvons décomposer la solution :

Mesures:

  1. Somme des préfixes des uns : précalculez un tableau où chaque élément à l'index i contient le nombre de uns ("1") jusqu'à l'index i dans la chaîne.
  2. Itérer sur la chaîne : Pour chaque position i, traitez la sous-chaîne de 0 à i comme la sous-chaîne "gauche" et de i 1 à la fin de la chaîne comme la sous-chaîne "droite".
    • Comptez les zéros dans la sous-chaîne de gauche en les comptant simplement au fur et à mesure de votre itération.
    • Utilisez la somme des préfixes pour compter les uns dans la sous-chaîne de droite (en soustrayant la somme des préfixes au point de partage du nombre total de uns dans la chaîne).
  3. Calculez le score : Pour chaque division possible, calculez le score comme le nombre de zéros dans la sous-chaîne de gauche plus le nombre de un dans la sous-chaîne de droite.
  4. Renvoyer le score maximum.

Implémentons cette solution en PHP : 1422. Score maximum après avoir divisé une chaîne

<?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
?>




<h3>
  
  
  Explication:
</h3>

<ol>
<li><p><strong>Calcul de la somme des préfixes</strong> : Nous calculons la somme des préfixes des uns dans le tableau $prefixOneCount, où chaque index contient le nombre cumulé de uns jusqu'à ce point.</p></li>
<li>
<p><strong>Itérer sur les divisions possibles</strong> : Nous commençons à parcourir chaque index i (de 0 à n-2), où la chaîne est divisée en une partie gauche (de 0 à i) et une partie droite ( de i 1 à n-1).</p>

<ul>
<li>Pour chaque division, comptez les zéros dans la sous-chaîne de gauche ($zeroCountLeft).</li>
<li>Utilisez le $prefixOneCount précalculé pour calculer le nombre d'unités dans la sous-chaîne de droite.</li>
</ul>
</li>
<li><p><strong>Calcul du score</strong> : Le score de chaque division est calculé comme la somme des zéros dans la partie gauche et des uns dans la partie droite. Nous mettons à jour le score maximum rencontré lors de cette itération.</p></li>
<li><p><strong>Résultat final</strong> : La fonction renvoie le score maximum trouvé lors de tous les fractionnements.</p></li>
</ol>

<h3>
  
  
  Complexité:
</h3>

<ul>
<li>
<p><strong>Complexité temporelle</strong> : <em><strong>O(n)</strong></em></p>

<ul>
<li>Le précalcul des sommes de préfixes et l'itération dans la chaîne prennent tous deux <em><strong>O(n)</strong></em>.</li>
<li>Itérer dans la chaîne pour calculer les scores prend également O(n).</li>
<li>Ainsi, la complexité temporelle totale est O(n), ce qui est efficace pour la taille d'entrée donnée (n ≤ 500).</li>
</ul>


</li>

<li>

<p><strong>Complexité spatiale</strong> : <em><strong>O(n)</strong></em></p>

<ul>
<li>Le tableau de somme de préfixes nécessite <em><strong>O(n)</strong></em> espace supplémentaire.</li>
</ul>


</li>

</ul>

<h3>
  
  
  Exemple:
</h3>



<pre class="brush:php;toolbar:false">echo maxScore("011101"); // Output: 5
echo maxScore("00111");  // Output: 5
echo maxScore("1111");   // Output: 3
Copier après la connexion

Cette solution est optimale et gère le problème dans les limites des contraintes.

Liens de contact

Si vous avez trouvé cette série utile, pensez à donner une étoile au référentiel sur GitHub ou à partager la publication sur vos réseaux sociaux préférés ?. Votre soutien signifierait beaucoup pour moi !

Si vous souhaitez du contenu plus utile comme celui-ci, n'hésitez pas à me suivre :

  • LinkedIn
  • GitHub

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal