已解决
LeetCode【32】最长的有效括号
来自网友在路上 11058105提问 提问时间:2023-11-21 00:25:37阅读次数: 105
最佳答案 问答题库1058位专家为你答疑解惑
题目:
思路:
括号字符串依次入栈,删除匹配的成对括号。最后栈中留下的都是无法匹配的断点。这些断点的差值减一就是断点间有效括号串的长度,取这些长度的最大值即可。
例如括号字符串 “)()((())(”,最后留在栈中的字符下标为 0 3 8。根据这三个断点可以得到,两个有效括号子串的长度分别为 3-0-1 = 2 和 8-3-1=4。所以最长的长度就是 4。
https://www.jianshu.com/p/e6b6e3b964d8
代码:
public int longestValidParentheses(String s) {if(s.length() <= 1) return 0;List<Integer> stack = new ArrayList<>();for(int i = 0; i < s.length(); ++i){if(!stack.isEmpty() && s.charAt(i) == ')' && s.charAt(stack.get(stack.size()-1)) == '(') stack.remove(stack.size()-1);else stack.add(i);}stack.add(s.length());int longest = stack.get(0);int diff;for(int i = 1; i < stack.size(); ++i){if((diff = stack.get(i)-stack.get(i-1)-1) > longest) longest = diff;}return longest;
}
查看全文
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"LeetCode【32】最长的有效括号":http://eshow365.cn/6-40738-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!