1:求最长括号,

()(()()(  例如,它的最长符合括号化的长度为4 
package com.li.huawei;

import java.util.Arrays;
import java.util.Stack; public class Question3 {
/**
* @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) { int[] arr = new int[input.length()];
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;
if (i - validLength >= 0) {
arr[i]=arr[i-1]+2+arr[i-validLength]; //动态规划,判断是否和上一个符合括号方案的括号是否相邻。
}else {
arr[i]=arr[i-1]+2;
}
maxValidLength=Math.max(maxValidLength, validLength);
}
else {
validLength=0;
}
}
} else {
stack.push(inputArray[i]);
validLength=0;
}
} Arrays.sort(arr);
System.out.println(arr[arr.length-1]);
return arr[arr.length-1];
} }

算法分析: 例如字符串

1:读取字符'('

到该位置的最长括号长度

2:读取字符')',  进行判断

到该位置的最长括号长度

3:挨个读取'((('

到该位置的最长括号长度

4:读取'(' 。

到该位置的最长括号长度

5:挨个读取'(('

到该位置的最长括号长度。

arr[i]=arr[i-1]+2+arr[i-validLength];  //动态规划,判断是否和上一个符合括号方案的括号是否相邻。
因为((()))是和前面的()是挨着的,所以,它们两个合一块也是符合括号化方案的。 所以应该将两个加在一起。

6:读取'('

到该位置的最长括号长度。

7:读取'('

到该位置的最长括号长度。

8:读取'('

到该位置的最长括号长度。

9:读取')'

到该位置的最长括号长度。

10  求出 数组中最大的值即为该最大化方案个数。

最长括号化长度 java的更多相关文章

  1. 最长DNA重复序列长度,并输出该序列。 JAVA

    1:  最长DNA重复序列长度,并输出该序列. 例如  ATCGTAGATCG,它的最大长度为4,序列为 ATCG. package com.li.huawei; import java.util.S ...

  2. LongestValidParentheses, 求最长合法括号子串长度-----同类问题ValidParentheses,GenerateParentheses

    问题描述:求括号字符串中最长合法子串长度.例如:()((),返回2,而不是4. 算法分析:还是利用栈,和判断合法括号对是一样的. public static int longestValidParen ...

  3. 滑雪_poj_1088(记忆化搜索).java

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 67987   Accepted: 25013 Description ...

  4. Latex学习——长竖线及长括号

    Latex学习——长竖线及长括号   文章修改中要求把花括号和竖线变长,查了下发现下面的几种方法: 1.花括号“{ }”变长: \$         \left\{... content...... ...

  5. ✡ leetcode 159. Longest Substring with At Most Two Distinct Characters 求两个字母组成的最大子串长度 --------- java

    Given a string, find the length of the longest substring T that contains at most 2 distinct characte ...

  6. paip.提高效率---集合的存取括号方式 uapi java python php js 的实现比较

    paip.提高效率---集合的存取括号方式 uapi java python php js 的实现比较 ##java ----------- 在JDK1.7中,摒弃了Java集合接口的实现类,如:Ar ...

  7. LeetCode: 3_Longest Substring Without Repeating Characters | 求没有重复字符的最长子串的长度 | Medium

    题目: Given a . For . 解题思路: 这个题让找一个字符串中具有不重复单词的最长子串的长度,如:ababc,子串为abc,长度为3.有这么几个方法: 方法一: 依赖字符串本身的一些特有函 ...

  8. ACMDP之最长公共子序列长度—HDU1159

    Common Subsequence Problem Description A subsequence of a given sequence is the given sequence with ...

  9. D - Milk Patterns (出现k次可重复的最长子串的长度)

    题目链接:https://cn.vjudge.net/contest/283743#problem/D 题目大意:给你n个数,然后问你出现m次的最长子串的长度. 具体思路:和上一篇博客的内容差不多,这 ...

随机推荐

  1. MathType公式保存后为什么字体会变化

    在使用MathType数学公式编辑器的时候,很多的用户朋友是新手会遇到一些问题,比如,有时我们保存后却发现MathType公式字体变化了,原本的斜体变成了正体,面对这种问题我们该如何解决呢?下面就来给 ...

  2. JavaScript------自定义string.replaceAll()方法

    代码:: 注意:原始的replace()方法只能替换第一个字符串check String.prototype.replaceAll = function (s1, s2) { return this. ...

  3. CSS-用伪元素制作小箭头(轮播图的左右切换btn)

    先上学习地址:http://www.htmleaf.com/Demo/201610234136.html 作者对轮播图左右按钮的处理方法一改往常,不是简单地用btn.prev+btn.next的图片代 ...

  4. Module 'null' not found异常解决办法

    百度原因:是因为在   /WEB_INF/web.xml文件中   <servlet> <servlet-name>ActionServlet</servlet-name ...

  5. oracle的cursor

    oracle的cursor 转自:http://www.cnblogs.com/shengtianlong/archive/2010/12/31/1922767.html 1,什么是游标? ①从表中检 ...

  6. OC开发_Storyboard——NaviationController简单例子

    一个简单的Navigation的例子,demo里面用到了上一个demo的MVC,可以参考下:http://www.cnblogs.com/daomul/p/4426063.html 建立一个Nav其实 ...

  7. Think PHP递归获取所有的子分类的ID (删除当前及子分类)

    递归获取所有的子分类的ID: //递归获取所有的子分类的ID function get_all_child($array,$id){ $arr = array(); foreach($array as ...

  8. nginx 认证访问web

    htpasswd -c /usr/local/nginx/passwd.db huo nginx .conf文件添加↓:

  9. <select>里动态添加option

    因为是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因. 如有冒犯请联系本人,或删除,或标明出处. 因为好的文章,以前只想收藏,但连接有时候会失效,所以 ...

  10. FZU 2107 Hua Rong Dao(dfs)

    Problem 2107 Hua Rong Dao Accept: 318 Submit: 703 Time Limit: 1000 mSec Memory Limit : 32768 KB Prob ...