• step 1:可以使用栈来记录左括号下标

  • step 2:遍历字符串,左括号入栈,每次遇到右括号则弹出左括号的下标。
  • 此时会出现两种情况:0,不合法情况,先出现右括号,1左括号比较多,2右括号比较多
  • step 3:然后长度则更新为当前下标与栈顶下标的距离。对于情况0,先出现右括号,不合法的情况必然没有人和他配对,所以直到遇到左括号之前,他都不是作为起点的。
  •                                                                                                                 遇到不符合的括号,可能会使栈为空,因    此    需要使用start记录上一次结束的位置,这样用当前下标减去start即可获取长度,即得到子串。
  •                                                                                          1左括号比较多 //栈中还有左括号,说明右括号不够,当前右括号所在坐标减去离他最近的左括号坐标(栈顶位置坐标)就是长度,
  •                                                                                             2右括号比较多,那么左括号栈空,一次能得到的最大括号个数取值完毕,当前位置减去该次开始位置i即可
  • step 5:循环中最后维护子串长度最大值。(res)