Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /