leetcode--day-3

题目

有效括号字符串为空 ("")、"(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。例如,"","()","(())()" 和 "(()(()))" 都是有效的括号字符串。

如果有效字符串 S 非空,且不存在将其拆分为 S = A+B 的方法,我们称其为原语(primitive),其中 A 和 B 都是非空有效括号字符串。

给出一个非空有效字符串 S,考虑将其进行原语化分解,使得:S = P_1 + P_2 + ... + P_k,其中 P_i 是有效括号字符串原语。

对 S 进行原语化分解,删除分解中每个原语字符串的最外层括号,返回 S 。

示例

输入:"(()())(())"
输出:"()()()"
解释:
输入字符串为 "(()())(())",原语化分解得到 "(()())" + "(())",
删除每个部分中的最外层括号后得到 "()()" + "()" = "()()()"。

输入:"()()"
输出:""
解释:
输入字符串为 "()()",原语化分解得到 "()" + "()",
删除每个部分中的最外层括号后得到 "" + "" = ""。

解题思路

//c++
class Solution {
    string removeOuterParentheses(string s) {
        string s_t = "";
        int num_left = 0;//左括号个数
        int temp_i = 0;//左括号下标
        for (int i = 1; i < s.length(); i++) {
            if (s[i] == '(')
                num_left++;
            if (s[i] == ')') {
                if (!(num_left--)) {
                    s_t += s.substr(temp_i+1, i - temp_i-1);
                    temp_i = i + 1;
                }
            }
        }
        return s_t;
    }
};

这题比较简单。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,435评论 0 5
  • 今天两个easy的题目,目前希望把easy的难度做到看完题就立即有思路后,在进一步做medium的题目。 1. J...
    码力平平菜鸡熊阅读 137评论 0 0
  • Algorithm 1021. 删除最外层的括号 有效括号字符串为空 ("")、"(" + A + ")" 或 A...
    dotdotdotdotbar阅读 302评论 0 0
  • 1021 Remove Outermost Parentheses 删除最外层的括号 Description:A ...
    air_melt阅读 144评论 0 0
  • 尚古风俗,凡交芒种节的这日,都要设摆各色礼物祭饯花神。言芒种一过,便是夏日了,众花皆谢,花神退位,须要饯行。然闺中...
    吴Mary阅读 330评论 0 0