leetcode 算法题1021 (简单269) 删除最外层的括号

leetcode 算法题1021 (简单269) 删除最外层的括号

  • 题目介绍
有效括号字符串为空 ("")、"(" + 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. S.length <= 10000
  2. S[i] 为 “(” 或 “)”
  3. S 是一个有效括号字符串
  • 解法一
/**
 * @param {string} S
 * @return {string}
 */
var removeOuterParentheses = function(S) {
    let i = count = 0, str = '';
    while(i < S.length) {
      if(S[i] === '(') {
        if(count) {
          str += S[i];
        }
        count++;
      } else {
        count--;
        if(count) {
          str += S[i];
        }
      }
      i++;
    }
    return str;
};

执行用时 : 72 ms, 在所有 JavaScript 提交中击败了91.38%的用户

内存消耗 : 35.9 MB, 在所有 JavaScript 提交中击败了76.92%的用户

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值