您的位置:首页 > 其它

leetcode Longest Valid Parentheses

2014-05-08 16:46 169 查看
思路:

//引入一个bool数组flag[], flag[i]标记i位置能不能匹配
//最后统计最长true的长度


class Solution {
public:
//引入一个bool数组flag[], flag[i]标记i位置能不能匹配 //最后统计最长true的长度
int longestValidParentheses(string s) {
if(s.length()<2) return 0;

// int sta = 0; // 标记待匹配的‘(’的个数
vector<bool> flag(s.length(),false);
stack<int> sta; // 标记待匹配的‘(’的下标

for(int i=0; i<s.length(); i++){
if(s[i]=='('){
sta.push(i);
continue;
}
else{
if(!sta.empty()){
flag[i] = true;
flag[sta.top()] = true;
sta.pop();
continue;
}
}
}
int longest = 0;
int tmp = 0;
for(int i=0; i<s.length(); i++){
// cout<<flag[i]<<endl;
if(flag[i]){
tmp++;
}
else{
longest = max(tmp,longest);
tmp = 0;
}
}
longest = max(tmp,longest);
return longest;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: