力扣:1021:删除最外层的括号
This commit is contained in:
parent
9d1ee7ea99
commit
8b01df8da0
@ -0,0 +1,79 @@
|
|||||||
|
//有效括号字符串为空 ("")、"(" + 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 是一个有效括号字符串
|
||||||
|
//
|
||||||
|
// Related Topics 栈
|
||||||
|
// 👍 163 👎 0
|
||||||
|
|
||||||
|
package leetcode.editor.cn;
|
||||||
|
|
||||||
|
//1021:删除最外层的括号
|
||||||
|
public class RemoveOutermostParentheses {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
//测试代码
|
||||||
|
Solution solution = new RemoveOutermostParentheses().new Solution();
|
||||||
|
}
|
||||||
|
|
||||||
|
//力扣代码
|
||||||
|
//leetcode submit region begin(Prohibit modification and deletion)
|
||||||
|
class Solution {
|
||||||
|
public String removeOuterParentheses(String S) {
|
||||||
|
int count = 0;
|
||||||
|
String result = "";
|
||||||
|
for (char ch : S.toCharArray()) {
|
||||||
|
if (ch == '(') {
|
||||||
|
count++;
|
||||||
|
result = count > 1 ? result + ch : result;
|
||||||
|
}else{
|
||||||
|
count--;
|
||||||
|
result = count > 0 ? result + ch : result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//leetcode submit region end(Prohibit modification and deletion)
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,46 @@
|
|||||||
|
<p>有效括号字符串为空 <code>("")</code>、<code>"(" + A + ")"</code> 或 <code>A + B</code>,其中 <code>A</code> 和 <code>B</code> 都是有效的括号字符串,<code>+</code> 代表字符串的连接。例如,<code>""</code>,<code>"()"</code>,<code>"(())()"</code> 和 <code>"(()(()))"</code> 都是有效的括号字符串。</p>
|
||||||
|
|
||||||
|
<p>如果有效字符串 <code>S</code> 非空,且不存在将其拆分为 <code>S = A+B</code> 的方法,我们称其为<strong>原语(primitive)</strong>,其中 <code>A</code> 和 <code>B</code> 都是非空有效括号字符串。</p>
|
||||||
|
|
||||||
|
<p>给出一个非空有效字符串 <code>S</code>,考虑将其进行原语化分解,使得:<code>S = P_1 + P_2 + ... + P_k</code>,其中 <code>P_i</code> 是有效括号字符串原语。</p>
|
||||||
|
|
||||||
|
<p>对 <code>S</code> 进行原语化分解,删除分解中每个原语字符串的最外层括号,返回 <code>S</code> 。</p>
|
||||||
|
|
||||||
|
<p> </p>
|
||||||
|
|
||||||
|
<p><strong>示例 1:</strong></p>
|
||||||
|
|
||||||
|
<pre><strong>输入:</strong>"(()())(())"
|
||||||
|
<strong>输出:</strong>"()()()"
|
||||||
|
<strong>解释:
|
||||||
|
</strong>输入字符串为 "(()())(())",原语化分解得到 "(()())" + "(())",
|
||||||
|
删除每个部分中的最外层括号后得到 "()()" + "()" = "()()()"。</pre>
|
||||||
|
|
||||||
|
<p><strong>示例 2:</strong></p>
|
||||||
|
|
||||||
|
<pre><strong>输入:</strong>"(()())(())(()(()))"
|
||||||
|
<strong>输出:</strong>"()()()()(())"
|
||||||
|
<strong>解释:</strong>
|
||||||
|
输入字符串为 "(()())(())(()(()))",原语化分解得到 "(()())" + "(())" + "(()(()))",
|
||||||
|
删除每个部分中的最外层括号后得到 "()()" + "()" + "()(())" = "()()()()(())"。
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p><strong>示例 3:</strong></p>
|
||||||
|
|
||||||
|
<pre><strong>输入:</strong>"()()"
|
||||||
|
<strong>输出:</strong>""
|
||||||
|
<strong>解释:</strong>
|
||||||
|
输入字符串为 "()()",原语化分解得到 "()" + "()",
|
||||||
|
删除每个部分中的最外层括号后得到 "" + "" = ""。
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p> </p>
|
||||||
|
|
||||||
|
<p><strong>提示:</strong></p>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li><code>S.length <= 10000</code></li>
|
||||||
|
<li><code>S[i]</code> 为 <code>"("</code> 或 <code>")"</code></li>
|
||||||
|
<li><code>S</code> 是一个有效括号字符串</li>
|
||||||
|
</ol>
|
||||||
|
<div><div>Related Topics</div><div><li>栈</li></div></div>\n<div><li>👍 163</li><li>👎 0</li></div>
|
Loading…
Reference in New Issue
Block a user