Maison >développement back-end >Problème PHP >Comment supprimer les parenthèses les plus extérieures en php

Comment supprimer les parenthèses les plus extérieures en php

coldplay.xixi
coldplay.xixioriginal
2020-08-29 13:28:132073parcourir

La méthode de suppression des parenthèses les plus extérieures en PHP : effectuez d'abord une décomposition primitive sur la chaîne valide non vide S ; puis obtenez la primitive de chaîne de crochets valide, puis supprimez et décomposez les parenthèses les plus extérieures de chaque chaîne primitive Parenthèses extérieures ; ; renvoie enfin la chaîne S.

Comment supprimer les parenthèses les plus extérieures en php

[Recommandations d'apprentissage associées : tutoriel graphique php]

Comment supprimer la parenthèse la plus externe en PHP :

La chaîne de parenthèse valide est vide (""), "(" + A + ")" ou A + B, où A et B sont tous deux des chaînes entre crochets valides et + représente la concaténation de chaînes. Par exemple, "", "()", "(())()" et "(()(()))" sont toutes des chaînes entre crochets valides.

Si la chaîne valide S n'est pas vide et qu'il n'y a aucun moyen de la diviser en S = A+B, nous l'appelons une primitive, où A et B sont tous deux des chaînes de caractères entre crochets valides non vides.

Étant donné une chaîne valide non vide S, pensez à la décomposer en primitives telles que : S = P_1 + P_2 + ... + P_k, où P_i est une primitive de chaîne entre crochets valide.

Effectuez une décomposition primitive sur S, supprimez les crochets les plus extérieurs de chaque chaîne primitive dans la décomposition et renvoyez S.

Exemple 1 :

Entrée : "(()())(())"

Sortie : "()()()"

Explication :

La chaîne d'entrée est "(()())(())", et la décomposition primitive est "(() ())" + "(())",

Après avoir supprimé le crochet le plus à l'extérieur de chaque partie, nous obtenons "()()" + "()" = "()()()" .

Exemple 2 :

Entrée : "(()())(())(()(()))"

Sortie : "()()()()())"

Explication :

La chaîne d'entrée est "(()())(()) (()(()))", la décomposition primitive donne "(()())" + "(())" + "(()(()))",

supprimer chaque Après le support le plus à l'extérieur dans la partie séparée, nous obtenons "()()" + "()" + "()(())" = "()()()()(())".

Exemple 3 :

Entrée : "()()"

Sortie : ""

Explication :

La chaîne d'entrée est "()()", et la décomposition primitive est "()" + "()".

Supprimez la couche la plus externe de chaque partie après le entre parenthèses, nous obtenons "" + "" = "".

Conseils :

S.length <= 10000
S[i] 为 "(" 或 ")"
S 是一个有效括号字符串
来源:力扣(LeetCode)
class Solution {
    /**
     * @param String $S
     * @return String
     */
    function removeOuterParentheses($S) {
        $strlen = strlen($S);
        $str = &#39;&#39;;
        $sum = 0;
        $star = 1;
        for($i=0;$i<$strlen;$i++){
            if($S[$i] == &#39;(&#39;){
                $sum--;
            }else{
                $sum++;
            }
            if($sum == 0){
                $str.=substr($S,$star,$i-$star);
                $star = $i+2;
            }
        }
        return $str;
    }
}

Recommandations d'apprentissage associées : programmation php(vidéo)

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!

Déclaration:
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