a*********0 发帖数: 2727 | 1 是不是连续valid才行? 比如())() 最大是4还是2??
网上看到的算法有用stack,首尾2遍扫描,甚至dp,简直不知所云。一个count搞不定
?? |
T******e 发帖数: 157 | 2 挺巧,我今天又做了一遍那道题
要求是连续的,你给的情况的条件应该是2 |
a*********0 发帖数: 2727 | 3 连续的用count搞不定么??非要用stack? |
A*********c 发帖数: 430 | 4 用stack是很自然的做法,看到匹配类的,我就像巴甫洛夫的狗一样想到stack。
你说的单counter应该不work。具体为什么得看你怎么写啊。
你写一个大伙分析一下。
【在 a*********0 的大作中提到】 : 是不是连续valid才行? 比如())() 最大是4还是2?? : 网上看到的算法有用stack,首尾2遍扫描,甚至dp,简直不知所云。一个count搞不定 : ??
|
a*********0 发帖数: 2727 | 5 class Solution {
public:
int longestValidParentheses(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int n = s.length();
int maxl = 0;
int count = 0;
int len = 0;
for(int i = 0;i < n;i++){
if(s[i] == '('){
count++;
len++;
}
if(s[i] == ')') {
count--;
len++;
}
if(count == 0 && len > maxl){// one valid substring found
maxl = len;
}
else if(count < 0){//invalid pre-fix
len = 0;
count = 0;
}
}
return maxl;
}
}; |
n*****a 发帖数: 107 | 6 ((())这个你返回几,应该是4;
还有这个 ()(),应该也返回4
【在 a*********0 的大作中提到】 : class Solution { : public: : int longestValidParentheses(string s) { : // Start typing your C/C++ solution below : // DO NOT write int main() function : int n = s.length(); : int maxl = 0; : int count = 0; : int len = 0; : for(int i = 0;i < n;i++){
|
k****i 发帖数: 128 | 7 ok,前后两边扫描呢?
【在 n*****a 的大作中提到】 : ((())这个你返回几,应该是4; : 还有这个 ()(),应该也返回4
|
l*****a 发帖数: 14598 | 8 一遍就可以为什么要两遍?
【在 k****i 的大作中提到】 : ok,前后两边扫描呢?
|