题解 | #最长的括号子串#
最长的括号子串
http://www.nowcoder.com/practice/45fd68024a4c4e97a8d6c45fc61dc6ad
import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return int整型
*/
public int longestValidParentheses (String s) {
// write code here
int[] dp = new int[s.length()];
int max = 0; // 定义一个整型变量,用于存放最终的返回结果
for (int i = 1; i < s.length(); i++) {
char chr = s.charAt(i); // 获取 i 位置上的字符
if (chr == '(') { // 如果 i 位置上的字符为 '(',跳过当次循环(以 '(' 为结尾的字符串的最长括号子串肯定为 0)
continue;
}
else {
if (i-dp[i-1]-1 > -1 && s.charAt(i-dp[i-1]-1) == '(') {
dp[i] = 2 + dp[i-1] + (i-dp[i-1]-2 > -1 ? dp[i-dp[i-1]-2] : 0);
}
}
max = Math.max(max, dp[i]);
}
return max;
}
}