最长有效括号的长度
/**
* 最长有效括号的长度
*
题⽬详情
给定只包含括号字符'('和 ')''的字符串,请出最长的有效括号内⼦括号的长度。
举⼏个例⼦如下:
例如对于"( ()",最长的有效的括号中的⼦字符串是"()" ,有效双括号数1个,故它的长度为 2。
再⽐如对于字符串") () () )",其中最长的有效的括号中的⼦字符串是"() ()",有效双括号数2个,故它的长度为4。
再⽐如对于"( () () )",它的长度为6。
换⾔之,便是有效双括号"()"数的两倍。
* @param s
* @return
*/
public int longestValidParentheses(String s)
{
int count = 0; //匹配的括号的个数
char []chars = s.toCharArray(); //将字符串转换为字符数组
Stack<Character> list = new Stack<>(); //此功能⽤栈实现
char ch;
for (int i = 0; i < chars.length; i++)
{
ch = chars[i];
if(i == 0)
{
if(ch == ')') //第⼀个是)的话不可能匹配到正确的括号
{
continue;
}
else
{
list.push(ch);
}
}
else
{
if(list.size() == 0)
{
if(ch == ')') //栈⾥⾯没有字符的话)也不可能匹配到括号
{
continue;
}
}
list.push(ch);
/
/到栈顶的第⼀个和第⼆个元素,看看它们是否是正确的括号
(list.size() - 1) == ')' && (list.size() - 2) == '(')
{
字符串长度排序list.pop(); //如果是正确的话将⼀对括号出栈
list.pop();
count++;
}
}
}
return count * 2;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论