Skip to content

Commit 43353b2

Browse files
committed
feat: resolve examples but a submission failed
1 parent 7fe0cc0 commit 43353b2

File tree

1 file changed

+36
-3
lines changed
  • generate_parentheses/src

1 file changed

+36
-3
lines changed

generate_parentheses/src/lib.rs

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,57 @@
11
pub struct Solution {}
22

33
impl Solution {
4-
pub fn generate_parenthesis(n: i32) -> Vec<String> {}
4+
pub fn generate_parenthesis(n: i32) -> Vec<String> {
5+
if n == 1 {
6+
return vec!["()".to_string()];
7+
}
8+
let mut result = Vec::new();
9+
for r in Self::generate_parenthesis(n - 1) {
10+
result.push(format!("({})", r));
11+
let s1 = format!("(){}", r);
12+
let s2 = format!("{}()", r);
13+
if s2 != s1 {
14+
result.push(s2);
15+
}
16+
result.push(s1);
17+
}
18+
result
19+
}
520
}
621

722
#[cfg(test)]
823
mod tests {
924
use super::*;
1025

26+
fn it_works(n: i32, expected: Vec<&str>) {
27+
let mut result = Solution::generate_parenthesis(n);
28+
let mut exp = expected.to_vec();
29+
result.sort();
30+
exp.sort();
31+
assert_eq!(result, exp);
32+
}
33+
1134
#[test]
1235
fn example_1() {
1336
let n = 3;
1437
let expected = ["((()))", "(()())", "(())()", "()(())", "()()()"];
15-
assert_eq!(Solution::generate_parenthesis(n), expected.to_vec());
38+
it_works(n, expected.to_vec());
1639
}
1740

1841
#[test]
1942
fn example_2() {
2043
let n = 1;
2144
let expected = ["()"];
22-
assert_eq!(Solution::generate_parenthesis(n), expected.to_vec());
45+
it_works(n, expected.to_vec());
46+
}
47+
48+
#[test]
49+
fn submission_1() {
50+
let n = 4;
51+
let expected = [
52+
"(((())))", "((()()))", "((())())", "((()))()", "(()(()))", "(()()())", "(()())()",
53+
"(())(())", "(())()()", "()((()))", "()(()())", "()(())()", "()()(())", "()()()()",
54+
];
55+
it_works(n, expected.to_vec());
2356
}
2457
}

0 commit comments

Comments
 (0)