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

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

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

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

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

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

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

/*** @param {string} S* @return {string}*/
var removeOuterParentheses = function(S) {};

个人解法

var removeOuterParentheses = function(S) {//左括号数量var leftNum = 0;//右括号数量var rightNum = 0;var arr = [];var result = [];//遍历字符串每个字符for(var i = 0; i< S.length; i++){if(S[i] === '('){//字符为(则leftNum ++leftNum ++;}else{//字符为)则rightNum ++rightNum ++;}arr.push(S[i]);//如果左右括号数目相等,则是一个原语if(leftNum === rightNum){//去掉右括号一个arr.pop();//去掉左括号一个arr.shift();//然后转化为字符串,push进resultresult.push(arr.join(""));//把arr清空arr = [];//leftNum和rightNum置零leftNum = 0;rightNum = 0;}}//返回result里面所有元素合成的字符串return result.join("");
};

LeetCode(1021)——删除最外层的括号(JavaScript)相关推荐

  1. LeetCode 1021. 删除最外层的括号(栈)

    文章目录 1. 题目 2. 解题 1. 题目 题目链接 示例 1:输入:"(()())(())" 输出:"()()()" 解释: 输入字符串为 "(( ...

  2. leetcode - 1021. 删除最外层的括号

    有效括号字符串为空 ("")("")("")."("+A+")""(" + A ...

  3. LeetCode 1021 删除最外层的括号

    原题链接 class Solution { public:string removeOuterParentheses(string S) {string str;int flag = 0;for(ch ...

  4. 1021.删除最外层的括号

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

  5. 1021. Remove Outermost Parentheses删除最外层的括号

    网址:https://leetcode.com/problems/remove-outermost-parentheses/ 使用栈的思想,选择合适的判断时机 class Solution { pub ...

  6. leetcode题解—1021、删除最外层的括号

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

  7. LeetCode 1249. 移除无效的括号(栈+set / deque)

    1. 题目 给你一个由 '('.')' 和小写字母组成的字符串 s. 你需要从字符串中删除最少数目的 '(' 或者 ')' (可以删除任意位置的括号),使得剩下的「括号字符串」有效. 请返回任意一个合 ...

  8. 【LeetCode - 32】最长有效括号

    给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度. 示例 1: 输入:s = "(()" 输出:2 解释:最长有效括号子串是 " ...

  9. [链表|多解法] leetcode 19 删除链表的倒数第N个节点

    [链表|多解法] leetcode 19 删除链表的倒数第N个节点 1.题目 题目链接 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2-&g ...

最新文章

  1. 神爱程序员,于是带来Python
  2. SpringBoot 项目瘦身指南,瘦到不可思议!
  3. 链家租房信息案例数据分析
  4. Codeforces Round #632 (Div. 2) C和D和F
  5. Learun对快速开发平台的基本认知与设定
  6. 【深度学习入门到精通系列】U-net网络分析
  7. 非spring环境中配置文件工具
  8. nodejs websocket server
  9. HDU 1087 Super Jumping! Jumping! Jumping!【最大递增子段和】
  10. LeetCode--283--移动0
  11. JavaScript小技巧总结
  12. flash xml+textArea组件+CSS
  13. 龙芯指令集也可以开源
  14. 浅谈算法和数据结构: 十一 哈希表
  15. 病毒木马查杀实战第022篇:txt病毒研究
  16. conda 查看已有环境
  17. 充值校园卡显示服务器异常,调查| 为何这次校园卡系统故障时间这么长?
  18. 前端通信:ajax设计方案(三)--- 集成ajax上传技术
  19. python3.6-XML解析方法
  20. COGNOS8 Transformer使用IQD做为数据源时报 TR1008 错误

热门文章

  1. FastDFS安装脚本
  2. Python的if判断与while循环
  3. Ubuntu 15.10 默认壁纸?
  4. SDWebImage 的简单使用方法
  5. 手把手教你制作easyUI+bootstrap工作站,主要学习tabs方法
  6. 对数据库设计的一点感想
  7. JAVA Pattern和Matcher 的用法
  8. Insert增加数据
  9. 043、JVM实战总结:动手实验,自己动手模拟出频繁Young GC的场景
  10. druid 多数据源_SpringBoot+Mybatis+Druid+PageHelper 实现多数据源并分页