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. jquery+json实现分页效果

    son作为一种轻量级的数据交换格式,由于其传输数据格式的方便性,今天偶然想将其应用于分页实现,分页做为web开发一个长久的话题,其应用的高效与重要性就不多说了本文主要技术:反射机制,Json数据格式, ...

  2. weblogic安装部署war包——windows

    ### weblogic安装部署war包——windows#### 下载weblogic安装包[csdn下载地址](https://download.csdn.net/download/luozhua ...

  3. linux中,通过crontab -e编辑生成的定时任务,写在哪个文件中

    环境描述: 操作系统:Red Hat Enterprise Linux Server release 6.6 (Santiago) 内核版本:2.6.32-504.el6.x86_64 需求描述: 一 ...

  4. swift--Timer实现定时器功能,每个一段时间执行具体函数,可以重复,也可以只执行一次

    1,创建 //控制器 timer = Timer.scheduledTimer(timeInterval: 0.001, target: self, selector: #selector(Fifte ...

  5. Android中的动画,选择器,样式和主题的使用

    一.动画: 1.动画的分类: 1).Tween动画:这种实现方式可以使视图组件移动.放大.缩小以及产生透明度的变化: 2).Frame动画:传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影. ...

  6. 使用Jquery做分页效果

    之前写过一个PHP 的分页效果,但是今天小伙伴和我说了一个不适用后台单纯用前段的JS来写分页,整理了一下,代码如下: html: <div id="containet"> ...

  7. ios错误大全

    /读取数据库数据 -(void)movethesqlitefile{ NSString *sourcepath=[[NSBundle mainBundle]pathForResource:@" ...

  8. Hadoop学习之路

    Hadoop是谷歌的集群系统的开源实现: -google集群系统:GFS.MapReduce.BigTable -Hadoop主要由HDFS(hadoop distrubuted file syste ...

  9. 真 · windows环境下php7.0以上开启curl方法

    看这个说明之前,大家肯定百度在网上看到什么: 配置php.ini ,把curl_dll前的分号去掉 在php.ini中,查找extension=php_curl.dll ,找到后把它前面的分号去掉 之 ...

  10. click() bind() live() delegate()区别

    click(),bind(),live()都是执行事件时使用的方法 1.click()单击事件方法: $("a").click(function() { alert("h ...