Create Longest Valid Parentheses

要找满足搭配的最长子串，dp超时。
有一个重要的考虑，这些满足要求的子串必定不重复。并且这些子串有两个特性。
依然利用栈来，不过压栈是记录下标。如果当前是），那么就找一个（出栈，同时可以记录当前最长的子串。
如果出栈后，栈空了，说明这个子串匹配完，可以去与最大值比较。而这个子串的的长度是上一次需要（而没有时的下标减去当前下标所得。
为什么                    if (par.empty())
                    {
                        res = max(res, i - last);
                    }
不是i-top，因为par已经empty了，没有top，而它上一个应该是上一次想要匹配而无法匹配的，就是想要(时，结果栈为空时。