標籤: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 stubString 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