首頁  >  文章  >  後端開發  >  php如何去除最外層小括號

php如何去除最外層小括號

coldplay.xixi
coldplay.xixi原創
2020-08-29 13:28:131998瀏覽

php去除最外層小括號的方法:首先對非空有效字串S進行原語化分解;然後得到有效括號字串原語;接著刪除分解其中每個原語字串的最外層括號;最後回傳字串S即可。

php如何去除最外層小括號

相關學習推薦:#php圖文教學##】

php去除最外層小括號的方法:

有效括號字串為空("")、"(" A ")" 或A B,其中A 和B 都是有效的括號字串, 代表字串的連接。例如,"","()","(())()" 和 "(()(()))" 都是有效的括號字串。

如果有效字串 S 非空,且不存在將其拆分為 S = A B 的方法,我們稱之為原語(primitive),其中 A 和 B 都是非空有效括號字串。

給出一個非空有效字串 S,考慮將其進行原語化分解,使得:S = P_1 P_2 ... P_k,其中 P_i 是有效括號字串原語。

對 S 進行原語化分解,刪除分解中每個原語字串的最外層括號,傳回 S 。

 

範例1:

#輸入:"(()())(())"

輸出:"()()()"

解釋:

輸入字串為"(()())(())",原語化分解得到"(() ())" "(())",

刪除每個部分中的最外層括號後得到"()()" "()" = "()()()"。

範例2:

輸入:"(()())(())(()(()))"

輸出:"()()()()(())"

解釋:

輸入字串為"(()())(()) (()(()))",原語化分解得到"(()())" "(())" "(()(()))",

刪除每隔部分中的最外層括號後得到"()()" "()" "()(())" = "()()()()(())"。

範例3:

輸入:"()()"

輸出:""

#解釋:輸入字串為"()()",原語化分解得到"()" "()",

刪除每個部分中的最外層括號後得到"" "" = ""。
#########提示:######
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;
    }
}
######相關學習推薦:###php程式設計###(影片)######## #

以上是php如何去除最外層小括號的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn