1. 程式人生 > >求最長有效括號長度 java

求最長有效括號長度 java

題目:輸入只包含圓括號的字串,找出最長的合法括號子串的長度

比如:

“(()”——》2,最長的有效子串是“()”

“)()())”——》4,最長的有效子串是“()()”

解題思路:

如果輸入是左括號就直接入棧,如果是右括號,如果此時棧為空或此時的棧頂不為左括號就不作處理同時把記錄有效長度的臨時變數置為0,如果棧頂為左括號則出棧並把記錄有效長度的臨時變數加2.最後返回最大的記錄長度的臨時變數即可。

程式碼:

import java.util.Stack;


public class LeetCode_LongestValidTokens {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String input=")())())";
		System.out.println(longestValidTokens(input));

	}
	
	public static int  longestValidTokens(String input) {
		
		char[] inputArray=input.toCharArray();
		int length=inputArray.length;
		if(length==0)
			return 0;
		int validLength=0;
		int maxValidLength=0;
		Stack<Character> stack=new Stack<>();
		for(int i=0;i<length;i++)
		{
			
				
			if(inputArray[i]==')')
			{
				if(stack.isEmpty())
				{
					validLength=0;
				}
				else {
					char tempPeek=stack.peek();
					if(tempPeek=='(')
					{
						stack.pop();
						validLength=validLength+2;
						maxValidLength=Math.max(maxValidLength, validLength);
					}
					else {
						validLength=0;
					}
				}
				
			}
			else {
				stack.push(inputArray[i]);
			}
			
		}
		return maxValidLength;
		
		
	}

}


相關推薦

有效括號長度 java

題目:輸入只包含圓括號的字串,找出最長的合法括號子串的長度 比如: “(()”——》2,最長的有效子串是“()” “)()())”——》4,最長的有效子串是“()()” 解題思路: 如果輸入是左括號就直接入棧,如果是右括號,如果此時棧為空或此時的棧頂不為左括號就不作處理同

有效括號長度

給定只包含括號字元'('和 ')''的字串,請找出最長的有效括號內子括號的長度。 舉幾個例子如下: 例如對於"( ()",最長的有效的括號中的子字串是"()" ,有效雙括號數1個,故它的長度為 2。 再比如對於字串") () () )",其中最長的有效的括號中的子字串是"() ()",有效雙括號數

leetcode 32. Longest Valid Parentheses 有效括號長度

Given a string containing just the characters ‘(’ and ‘)’, find the length of the longest valid (well-formed) parentheses substring

Leetcode演算法Java全解答--32. 有效括號

Leetcode演算法Java全解答–32. 最長有效括號 文章目錄 Leetcode演算法Java全解答--32. 最長有效括號 題目 想法 結果 總結 程式碼 我的答案 大佬們的答案

leetcode第32題:有效括號(遇到一個奇葩的錯誤)

問題描述: 給一個只包含 '(' 和 ')' 的字串,找出最長的有效(正確關閉)括號子串的長度。 對於 "(()",最長有效括號子串為 "()" ,它的長度是 2。 另一個例子 ")()())",最長有效括號子

[Swift]LeetCode32. 有效括號 | Longest Valid Parentheses

Given a string containing just the characters '(' and ')', find the length of the longest valid (well-formed) parentheses substring. Exampl

Leetcode演算法——32、有效括號字串

給定一個字串,只包含’(‘和’)’。 要求找到最長的有效的子串。 Example 1: Input: “(()” Output: 2 Explanation: The longest valid parentheses substring is “()” Example 2:

LeetCode---32.有效括號

題目來源:https://leetcode-cn.com/problems/longest-valid-parentheses/description/ 題目描述: 演算法描述: 1.定義一個maxLength記錄最長有效括號長度,beginIndex記錄有效括號的起始位置。

leetcode 32 有效括號 O(N)時間解法

題目: 給一個只包含 ‘(’ 和 ‘)’ 的字串,找出最長的有效(正確關閉)括號子串的長度。 對於 “(()”,最長有效括號子串為 “()” ,它的長度是 2。 另一個例子 “)()())”,最長有效括號子串為 “()()”,它的長度是 4。 連結: https://le

Leetcode 32:有效括號詳細的解法!!!)

給定一個只包含 '(' 和 ')' 的字串,找出最長的包含有效括號的子串的長度。 示例 1: 輸入: "(()" 輸出: 2 解釋: 最長有效括號子串為 "()" 示例 2: 輸入: ")()())" 輸出: 4 解釋: 最長有效括號子串為 "()()" 解題思路

leetcode題庫——有效括號

題目描述: 給定一個只包含 '(' 和 ')' 的字串,找出最長的包含有效括號的子串的長度。 示例 1: 輸入: "(()" 輸出: 2 解釋: 最長有效括號子串為 "()" 示例 2: 輸入: ")()())" 輸出: 4

棧-LeetCode32-有效括號

題目 給定一個只包含 '(' 和 ')' 的字串,找出最長的包含有效括號的子串的長度。 示例 1: 輸入: "(()" 輸出: 2 解釋: 最長有效括號子串為 "()" 示例 2: 輸入: ")()())" 輸出: 4 解釋: 最長有效括號子串為 "()()" 思路 明顯地,使用棧

LeetCode32-有效括號

最近這兩天有斷更了,大家知道是為什麼嗎?肯定不是因為是我懶哈(大家想要笑也要憋著)這兩天一直在研究回溯法,被折磨的死去活來的。終於是有些收穫了,所以會在這兩天再把我的一些關於解回溯法題目的心得分享出來,希望大家會有些收穫。寫的都會是很通俗易懂的大白話,會教大家怎麼寫遞迴的過程,因為回溯法雖然好用,但

LeetCode 32. Longest Valid Parentheses(有效括號)

原題 Given a string containing just the characters ‘(’ and ‘)’, find the length of the longest valid (well-formed) parentheses substr

【LeetCode】32. 有效括號

題目描述 給定一個只包含 '(' 和 ')' 的字串,找出最長的包含有效括號的子串的長度。 示例 1: 輸入: "(()" 輸出: 2 解釋: 最長有效括號子串為 "()" 示例 2: 輸入: ")()())" 輸出: 4 解釋: 最長有效括號子串為 "()()"

32. 有效括號

給定一個只包含 ‘(’ 和 ‘)’ 的字串,找出最長的包含有效括號的子串的長度。 示例 1: 輸入: “(()” 輸出: 2 解釋: 最長有效括號子串為 “()” 示例 2: 輸入: “)()())”

Leetcode 32.有效括號

最長有效括號 給定一個只包含 '(' 和 ')' 的字串,找出最長的包含有效括號的子串的長度。 示例 1: 輸入: "(()" 輸出: 2 解釋: 最長有效括號子串為 "()" 示例 2: 輸入: ")()())" 輸出: 4 解釋: 最長有效括

有效括號字串

題目描述 給定一個只包含 '(' 和 ')' 的字串,找出最長的包含有效括號的子串的長度。 示例 1: 輸入: "(()" 輸出: 2 解釋: 最長有效括號子串為 "()" 示例 2: 輸入: ")()())" 輸出: 4 解釋: 最長有效括號子串為 "()()" 解題思路

LeetCode-32. 有效括號

題目地址:https://leetcode-cn.com/problems/longest-valid-parentheses/ 思路:預處理所有匹配成功的括號,然後問題轉化為最長連續子序列。 AC程式碼: class Solution { public: int longe

程式設計之美---有效括號字串

題目         給定字串,僅包含左括號‘(’和右括號‘)’,它可能不是括號匹配的,設計演算法,找出最長匹配的括號子串,返回該子串的長度。         如:                  (():2                  ()():4