Skip to content

Commit 9793f90

Browse files
author
gssdromen
committed
【新题目】
1 parent 4f2a487 commit 9793f90

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed

32. 最长有效括号/Rust/Cargo.lock

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[package]
2+
name = "Rust"
3+
version = "0.1.0"
4+
authors = ["gssdromen <[email protected]>"]
5+
edition = "2018"
6+
7+
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
8+
9+
[dependencies]
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
struct Solution {}
2+
3+
4+
impl Solution {
5+
pub fn longest_valid_parentheses(s: String) -> i32 {
6+
let mut maxAns = 0;
7+
let count = s.len();
8+
let sList = s.as_bytes();
9+
let mut dp: Vec<i32> = vec![0; count];
10+
11+
for i in 1..count {
12+
if sList[i] == b')' {
13+
let temp = i - dp[i - 1] as usize;
14+
if sList[i-1] == b'(' {
15+
if i >= 2 {
16+
dp[i] = dp[i-2] + 2;
17+
} else {
18+
dp[i] = 2;
19+
}
20+
} else if (temp as i32) > 0 && sList[temp - 1] == b'(' {
21+
if (temp as i32) >= 2 {
22+
dp[i] = dp[i-1]+dp[temp - 2] + 2;
23+
} else {
24+
dp[i] = dp[i-1] + 2;
25+
}
26+
}
27+
maxAns = std::cmp::max(maxAns, dp[i]);
28+
}
29+
}
30+
31+
return maxAns;
32+
}
33+
}
34+
35+
fn main() {
36+
println!("Hello, world!");
37+
}

0 commit comments

Comments
 (0)