Skip to content

Commit ecd4a23

Browse files
committed
q22
1 parent 9c65648 commit ecd4a23

File tree

1 file changed

+38
-15
lines changed

1 file changed

+38
-15
lines changed

src/backtrace/q22.rs

Lines changed: 38 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,50 @@ struct Solution();
1616
impl Solution {
1717
pub fn generate_parenthesis(n: i32) -> Vec<String> {
1818

19+
fn nest_function(s: String, l:i32 , r: i32, n: i32)-> Vec<String>{
20+
let mut ret = vec![];
1921

20-
fn back_track(s: String, open: i32, close: i32) -> Vec<String> {
21-
let mut res = vec![];
22-
23-
if open == 0 && close == 0 {
24-
return vec![s.to_owned()]
22+
if l == n && r == n {
23+
return vec![s]
2524
}
2625

27-
if open > 0 {
28-
res.append(&mut back_track(s.clone()+"(", open-1, close+1));
26+
27+
if l < n {
28+
ret.append(&mut nest_function(s.clone() + "(", l + 1, r, n));
2929
}
3030

31-
if close > 0 {
32-
res.append(&mut back_track(s.clone()+")", open.clone(), close-1));
31+
if r < n && l > r{
32+
ret.append(&mut nest_function(s.clone() + ")", l, r+1, n));
3333
}
34-
res
3534

35+
ret
3636
}
3737

38-
back_track("".to_owned(), n, 0)
38+
39+
fn check_legal(s: &str) -> bool {
40+
let mut clause = 0;
41+
for v in s.chars() {
42+
if v == '(' {
43+
clause += 1;
44+
} else {
45+
clause -= 1;
46+
}
47+
48+
if clause < 0 {
49+
return false;
50+
}
51+
};
52+
53+
println!("{:?}", clause==0);
54+
clause == 0
55+
}
56+
57+
58+
nest_function("(".to_owned(), 1, 0 ,n)
3959
}
60+
61+
62+
4063
}
4164

4265

@@ -48,11 +71,11 @@ mod tests {
4871

4972
#[test]
5073
fn it_works() {
51-
let result = Solution::generate_parenthesis(2);
74+
let result = Solution::generate_parenthesis(3);
5275
println!("{:?}", result);
53-
assert_eq!(result.len(), 2);
54-
assert!(result.contains(&"(())".to_owned()));
55-
assert!(result.contains(&"()()".to_owned()));
76+
// assert_eq!(result.len(), 2);
77+
// assert!(result.contains(&"(())".to_owned()));
78+
// assert!(result.contains(&"()()".to_owned()));
5679

5780
}
5881
}

0 commit comments

Comments
 (0)