Algorithm
32. Longest Valid Parentheses
my answer --wrong answer
class Solution {
public int longestValidParentheses(String s) {
int leftnum = 0;
int now = 0;
int max = 0, temp = 0;
while(now < s.length()) {
if ("(".equals(s.substring(now, now+1))) {
++leftnum;
} else {
if (leftnum == 0) {
temp = 0;
} else {
--leftnum;
temp += 2;
}
max = max > temp ? max : temp;
}
++now;
}
return max;
}
}
问题原因:没有考虑左括号分隔了两个valid parentheses的情况。如"()(()"
利用位置下标来计算长度
class Solution {
public int longestValidParentheses(String s) {
//记录待匹配括号的位置
Stack needMatchIndex = new Stack<>();
int now = 0;
int max = 0;
while(now < s.length()) {
//如果匹配上
if (needMatchIndex.isEmpty()== false && ')' == s.charAt(now) && '(' == s.charAt(needMatchIndex.peek())) {
int index = needMatchIndex.pop();
//从头到目前的内容都匹配上了
if (needMatchIndex.isEmpty()) {
max = max > (now +1) ? max : (now +1);
} else {//需要减掉不连续的部分
max = max > (now - needMatchIndex.peek()) ? max : (now - needMatchIndex.peek());
}
} else {
needMatchIndex.push(now);
}
++now;
}
return max;
}
}
Tip
mysql 安装好之后可以在“系统偏好设置”中看到mysql的图标,点击进去后可以进行相关配置,也可查看安装位置。如果安装mysql后mysql命令仍然无法使用,说明是没有在PATH里面加上其路径。用户可以在上述所说的位置找到路径,加入PATH中hMySQL for Mac 安装教程
Share
不要为了“分库分表”而“分库分表”