LeetCode(1021)——删除最外层的括号(JavaScript)
有效括号字符串为空 ("")
、"(" + 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:
输入:"()()"
输出:""
解释:
输入字符串为 “()()”,原语化分解得到 “()” + “()”,
删除每个部分中的最外层括号后得到 “” + “” = “”。
/*** @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)相关推荐
- LeetCode 1021. 删除最外层的括号(栈)
文章目录 1. 题目 2. 解题 1. 题目 题目链接 示例 1:输入:"(()())(())" 输出:"()()()" 解释: 输入字符串为 "(( ...
- leetcode - 1021. 删除最外层的括号
有效括号字符串为空 ("")("")("")."("+A+")""(" + A ...
- LeetCode 1021 删除最外层的括号
原题链接 class Solution { public:string removeOuterParentheses(string S) {string str;int flag = 0;for(ch ...
- 1021.删除最外层的括号
有效括号字符串为空 ("")."(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接.例如 ...
- 1021. Remove Outermost Parentheses删除最外层的括号
网址:https://leetcode.com/problems/remove-outermost-parentheses/ 使用栈的思想,选择合适的判断时机 class Solution { pub ...
- leetcode题解—1021、删除最外层的括号
有效括号字符串为空 ("")."(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接.例如 ...
- LeetCode 1249. 移除无效的括号(栈+set / deque)
1. 题目 给你一个由 '('.')' 和小写字母组成的字符串 s. 你需要从字符串中删除最少数目的 '(' 或者 ')' (可以删除任意位置的括号),使得剩下的「括号字符串」有效. 请返回任意一个合 ...
- 【LeetCode - 32】最长有效括号
给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度. 示例 1: 输入:s = "(()" 输出:2 解释:最长有效括号子串是 " ...
- [链表|多解法] leetcode 19 删除链表的倒数第N个节点
[链表|多解法] leetcode 19 删除链表的倒数第N个节点 1.题目 题目链接 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2-&g ...
最新文章
- 神爱程序员,于是带来Python
- SpringBoot 项目瘦身指南,瘦到不可思议!
- 链家租房信息案例数据分析
- Codeforces Round #632 (Div. 2) C和D和F
- Learun对快速开发平台的基本认知与设定
- 【深度学习入门到精通系列】U-net网络分析
- 非spring环境中配置文件工具
- nodejs websocket server
- HDU 1087 Super Jumping! Jumping! Jumping!【最大递增子段和】
- LeetCode--283--移动0
- JavaScript小技巧总结
- flash xml+textArea组件+CSS
- 龙芯指令集也可以开源
- 浅谈算法和数据结构: 十一 哈希表
- 病毒木马查杀实战第022篇:txt病毒研究
- conda 查看已有环境
- 充值校园卡显示服务器异常,调查| 为何这次校园卡系统故障时间这么长?
- 前端通信:ajax设计方案(三)--- 集成ajax上传技术
- python3.6-XML解析方法
- COGNOS8 Transformer使用IQD做为数据源时报 TR1008 错误