括号的合法序列:LeetCode32
2019-08-27 本文已影响0人
轻菊不爱柠檬
解释:() 算两个子串,故长度为2 。
算法:双指针+贪心,时间复杂度O(n)
思路:
1.假设当前从前往后扫描的合法子串的数量,现在设置一个变量val用来记录遇到的括号,若为'(',那么val++;若为')',那么val--。
2.判断若最后val==0,说明是合法的,那么res统计下来;若val<0,那么就说明接下来的都不会是合法的(因都是右括号而没有左括号了),此时就把val置为0,start往后移动一位。
3.可以发现我们第二步我们没有统计val>0的情况,这个情况我们是放在另一个循环里面,即由后往前扫描的这次。