题目链接:1021. 删除最外层的括号(简单)
算法原理:
解法:一次遍历
2ms击败87.52%
时间复杂度O(N)
思路就很简单,先找到“原语”,然后去掉两边的括号即可,为了降低时间复杂度,我们可以用拼接的方式保证一次遍历就解决,那么在拼接时就要判断,当前的 “(”或者“)”,是不是要移除的,或者说无需拼接的
①怎么判断“原语”?遇到“(”,cnt++,遇到“)”,cnt--,当cnt=0时,当前字符串就是“原语”
②怎么判断是否跳过拼接?也是当cnt=0 的时候~~
Java代码:
class Solution { //1021. 删除最外层的括号 public String removeOuterParentheses(String ss) { StringBuffer cur=new StringBuffer(); char[] s=ss.toCharArray(); int cnt=0; for(char c:s){ if(c=='('){ cnt++; if(cnt-1!=0) cur.append(c); }else{ cnt--; if(cnt!=0) cur.append(c); } } return cur.toString(); } }