Leetcode 32 Longest Valid Parentheses
Given a string containing just the characters '('
and ')'
, find the length of the longest valid (well-formed) parentheses substring.
Example 1:
Input: "(()"
Output: 2
Explanation: The longest valid parentheses substring is "()"
Example 2:
Input: ")()())
" Output: 4 Explanation: The longest valid parentheses substring is"()()"
這個題的意思是求出字串中存在的括號對並進行返回。
1)
class Solution {
public int longestValidParentheses(String s) {
int max = 0;
Stack<Integer> stack = new Stack<>();
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{
max = Math.max(max,i - stack.peek());//計算最大量
}
}
}
return max;
}
}
2)
public class Solution {
public int longestValidParentheses(String s) {
int left = 0, right = 0, maxlength = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
left++;
} else {
right++;
}
if (left == right) {
maxlength = Math.max(maxlength, 2 * right);
} else if (right >= left) {
left = right = 0;
}
}
left = right = 0;
for (int i = s.length() - 1; i >= 0; i--) {
if (s.charAt(i) == '(') {
left++;
} else {
right++;
}
if (left == right) {
maxlength = Math.max(maxlength, 2 * left);
} else if (left >= right) {
left = right = 0;
}
}
return maxlength;
}
}
從左到右和從右向左進行掃。
相關文章
- [LeetCode] 32. Longest Valid ParenthesesLeetCode
- Longest Valid Parentheses
- 【leetcode】32. Longest Valid Parentheses 最長的有效匹配括號子串長度LeetCode
- Leetcode 20 Valid ParenthesesLeetCode
- LeetCode Valid Parentheses(020)解法總結LeetCode
- Leetcode 20 有效的括號valid-parentheses(棧)LeetCode
- LeetCode 之 JavaScript 解答第20題 —— 有效的括號(Valid Parentheses)LeetCodeJavaScript
- Leetcode 22 Generate ParenthesesLeetCode
- Leetcode - 022. Generate ParenthesesLeetCode
- Leetcode 36 Valid SudokuLeetCode
- Leetcode 14 Longest Common PrefixLeetCode
- LeetCode 5 (Longest Palindromic Substring)LeetCode
- LeetCode Generate Parentheses(022)解法總結LeetCode
- [LeetCode] 5. Longest Palindromic SLeetCode
- Leetcode 611 javascript Valid Triangle NumberLeetCodeJavaScript
- [LeetCode] 678. Valid Parenthesis StringLeetCode
- [LeetCode] 2419. Longest Subarray With Maximum Bitwise ANDLeetCode
- [LeetCode] 2831. Find the Longest Equal SubarrayLeetCode
- Leetcode 3 Longest Substring Without Repeating CharactersLeetCode
- [LeetCode] 674. Longest Continuous Increasing SubsequenceLeetCode
- leetcode388. Longest Absolute File PathLeetCode
- Leetcode 298 Binary Tree Longest Consecutive SequenceLeetCode
- Leetcode 329. Longest Increasing Path in a MatrixLeetCode
- [LeetCode] 2414. Length of the Longest Alphabetical Continuous SubstringLeetCodeAlphabet
- LeetCode Longest Common Prefix(014)解法總結LeetCode
- Leetcode 3. Longest Substring Without Repeating CharactersLeetCode
- [LeetCode] 524. Longest Word in Dictionary through DeletingLeetCode
- leetcode 593. Valid Square練習LeetCode
- leetcode 593. Valid Square 練習LeetCode
- leetcode學習筆記14 Longest Common PrefixLeetCode筆記
- C# 寫 LeetCode easy #14 Longest Common PrefixC#LeetCode
- Leetcode javascript 3 longest-substring-without-repeating-charactersLeetCodeJavaScript
- LeetCode Longest Substring Without Repeating Characters(003)解法總結LeetCode
- LeetCode - 014 - 最長公共字首(longest-common-prefix)LeetCode
- Leetcode 329. Longest Increasing Path in a Matrix (python+cpp)LeetCodePython
- [LeetCode] 3. Longest Substring Without Repeating Characters 題解LeetCode
- 【leetcode】22. Generate Parentheses 合法括號串的所有組合LeetCode
- LeetCode65. Valid Number — 判斷合法數字LeetCode