括号字符串的有效性和最长有效长度
2017-11-01 10:54
351 查看
/** * Created by lxw, liwei4939@126.com on 2017/11/1. * 括号字符串的有效性和最长有效长度 */ public class bracketsIsValid { public boolean isValid(String str){ if(str == null || str.equals("")){ return false; } char[] chas = str.toCharArray(); int status = 0; for (int i=0; i< chas.length; i++){ if(chas[i] != '(' && chas[i] != ')'){ return false; } if(chas[i] == ')' && --status < 0){ return false; } if(chas[i] == '('){ status++; } } return status == 0; } public int maxLength(String str){ if(str == null || str.equals("")){ return 0; } char[] chas = str.toCharArray(); int[] dp = new int[chas.length]; int pre = 0; int res = 0; for (int i = 1; i < chas.length; i++){ if(chas[i] == ')'){ pre = i-dp[i-1] - 1; if(pre >= 0 && chas[pre] == '('){ dp[i] = dp[i-1] + 2 + (pre > 0 ? dp[pre-1] : 0); } } res = Math.max(res, dp[i]); } return res; } public static void main(String[] args){ bracketsIsValid tmp = new bracketsIsValid(); String str1 = "(())"; System.out.println(tmp.isValid(str1)); String str2 = "()("; System.out.println(tmp.isValid(str2)); System.out.println(tmp.maxLength(str1)); System.out.println(tmp.maxLength(str2)); } }
相关文章推荐
- 括号字符串的有效性和最长有效长度
- 括号字符串的有效性和最长有效长度
- 字符串问题---括号字符串的有效性和最长有效长度
- Longest Valid Parentheses (求最长有效匹配括号子串的长度)
- 在线编程:最长有效括号的长度
- Longest Valid Parentheses (求最长有效匹配括号子串的长度)
- 最长有效括号的长度(来自 庞果)
- 最长有效括号长度
- 最长的有效括号序列长度
- 最长有效括号的长度--英雄会
- LeetCode: Longest Valid Parentheses (求最长有效匹配括号子串的长度)
- 练手系列(2) 最长有效括号的长度
- Longest Valid Parentheses (求最长有效匹配括号子串的长度)
- leetcode 32. Longest Valid Parentheses 最长有效括号长度
- LeetCode | 32. Longest Valid Parentheses——最长有效括号匹配长度
- 最长有效括号的长度问题
- 找出最长的有效括号内子括号的长度
- ”最长有效括号的长度“
- 最长有效括号长度
- 庞果网:最长有效括号的长度(挑战失败,代码如下,求指教)