LeetCode No32. 最長有效括號
阿新 • • 發佈:2022-05-05
題目
給你一個只包含 '(' 和 ')' 的字串,找出最長有效(格式正確且連續)括號子串的長度。
示例 1:
輸入:s = "(()"
輸出:2
解釋:最長有效括號子串是 "()"
示例 2:
輸入:s = ")()())"
輸出:4
解釋:最長有效括號子串是 "()()"
示例 3:
輸入:s = ""
輸出:0
提示:
0 <= s.length <= 3 * 10^4
s[i] 為 '(' 或 ')'
思路
字元裡面只含有"(" 或者 ")",其實就是一個括號匹配問題,把左括號的下標存起來,然後遍歷陣列,遇到不匹配的情況,就拿出來,用當前下標減去當前棧頂的下標,得出的值就是有效括號的長度。
AC程式碼
點選檢視程式碼
class Solution { public int longestValidParentheses(String s) { int maxans = 0; Deque<Integer> stack = new LinkedList<Integer>(); stack.push(-1); for (int i = 0; i < s.length(); i++) { if (s.charAt(i) == '(') { stack.push(i); } else { stack.pop(); if (stack.isEmpty()) { stack.push(i); } else { maxans = Math.max(maxans, i - stack.peek()); } } } return maxans; } }