动态规划,三步走。第一步、定义f[i],由于是子串,所以必须连续,一般设f[i]为第i个字符结尾的有效括号长度。第二步、推理;1、如果当前字符s[i] = "(" 则 f[i] = 0;2、如果当前字符s[i] = ")",则有两种情况。a> "xxxx()" 这种情况下,需要s[i-1]="(", f[i] = f[i-2]+2,因为f[i-2]代表i-2位置的最大有效数,相加即为i位置结尾的最大值。b>"xxxx(())"这种情况,需要s[i-f[i-1]-1] 位置为"(" ,因为f[i-1]是i-1位置的最大值,他们是合理括号,如果闭合只能是i-f[i-1]-1位置和当前i...